6月4日にようやく正式版がリリースされたOpenCV3.0.0をインストールします。
OpenCV3.0.0のインストール
OpenCVはapt-getでもインストールできますが、最新版を使用したいので、ここではソースからコンパイルします。
まず前準備として、必要なツールやライブラリをインストールします。
$ sudo apt-get -y install build-essential cmake cmake-qt-gui pkg-config libpng12-0 libpng12-dev libpng++-dev libpng3 libpnglite-dev zlib1g-dbg zlib1g zlib1g-dev pngtools libtiff4-dev libtiff4 libtiffxx0c2 libtiff-tools $ sudo apt-get -y install libjpeg8 libjpeg8-dev libjpeg8-dbg libjpeg-progs ffmpeg libavcodec-dev libavcodec53 libavformat53 libavformat-dev libgstreamer0.10-0-dbg libgstreamer0.10-0 libgstreamer0.10-dev libxine1-ffmpeg libxine-dev libxine1-bin libunicap2 libunicap2-dev libdc1394-22-dev libdc1394-22 libdc1394-utils swig libv4l-0 libv4l-dev python-numpy libpython2.6 python-dev python2.6-dev libgtk2.0-dev pkg-config $ sudo apt-get install libswscale-dev
続いてOpenCVの入手とビルドです。
$ wget http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/3.0.0/opencv-3.0.0.zip $ unzip opencv-3.0.0.zip $ cd opencv-3.0.0 $ mkdir build $ cd build $ cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D BUILD_NEW_PYTHON_SUPPORT=ON -D BUILD_EXAMPLES=ON .. $ make -j 4 $ sudo make install $ sudo ldconfig
上記の通り、「make -j 4」でmakeすることによって4並列でコンパイルできます。Raspberry Pi 2の本領発揮ですね!
コンパイルは1時間ぐらいで終了しました。
顔認識サンプルの実行
上記の通り「BUILD_EXAMPLES=ON」を指定してビルドした場合はサンプルもビルドされています。
定番の顔認識を動かしてみます。OpenCVに含まれているレナさん画像で試してみます。
$ cd bin $ ./cpp-example-facedetect --cascade="../../data/haarcascades/haarcascade_frontalface_alt.xml" --scale=1.5 ../../samples/data/lena.jpg
画像ファイルを指定しなければUSBカメラの動画で認識できます。動画の場合はパフォーマンスを考慮し、scaleは4ぐらいが良いようです。
$ ./cpp-example-facedetect --cascade="../../data/haarcascades/haarcascade_frontalface_alt.xml" --scale=4
はじめまして。
ラズパイ設定においてこのサイトをよく参考にさせていただいております。
raspicamCVをopenCV3.0.0に対応させるのはどうしたらよいでしょうか?
Makefileにはいっているopencv_legacy moduleが3.0からdeprecateになっているようでエラーになってしまいます。外してコンパイルすると通るのですが、サンプルが動かなくなってしまいます。
もしなにか解決策などありましたらご教示いただけるとうれしいです。
futurestandardさん
当方で試したところでは、opencv_legacyをはずしてコンパイルして、サンプル(RaspiCamTest.c)も動作しました。
pontaさん
ありがとうございます。
別のプログラムで起動時にカメラを常時稼働させていたのが原因だったようです。
そちらをきればきちんと動作しました。