RaspbianとOpenCVのバージョンは下記のとおりです。
- 2013-02-09-wheezy-raspbian
- OpenCV 2.4.4 および 2.3.1
インストールには,『①ソースコードをRaspberry Pi上でビルドする方法』と,『②apt-getコマンドを使う方法』とがあります。「Raspberry Pi OpenCV」などで検索すると①の方法がヒットするため,最初はこの方法で頑張っていたのですが,Raspberry Pi上でのビルドには4~10時間かかるので注意です(10時間待ったあとでビルドの失敗に気づいたときとか…もう…ね…)。ただ,最新のOpenCVをインストールできるというメリットがあります。現在はOpenCV 2.4.4が最新です。
②の方法は,①の方法で成功した後で知りました。この方法なら,インストールに30分もかかりません(orz)。ただし,OpenCVは少し古いバージョンになります。現在は,OpenCV 2.3.1がインストールされます。
①ソースコードをRaspberry Pi上でビルドする方法
下記サイトを参考に作業を進めました。
作業の前に,インストール済みのパッケージを最新にしておくことをオススメします。
~ $ sudo apt-get update ~ $ sudo apt-get upgrade
ビルドに必要なパッケージをインストールします。パッケージ多すぎ…(python2.6とか必要なのでしょうか?実行には最初からインストールされているpython2.7が使用されます…)。とりあえず指示されているものをすべてインストール。
追記:python2.6関連のパッケージは無くてもOKのようなので除外しました。除外したパッケージ:libpython2.6 python2.6-dev
~ $ 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 python-dev libgtk2.0-dev pkg-config
私の場合,一度でインストールできないことがありました。apt-get updateしてといわれるので,updateしてからinstallすればOKです。
ソースのダウンロード&解凍。私はホームディレクトリにダウンロードしました。
~ $ wget http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/2.4.4/OpenCV-2.4.4.tar.bz2 ~ $ tar -xvjpf OpenCV-2.4.4.tar.bz2
ビルド用フォルダを作って移動。
~ $ cd OpenCV-2.4.4 ~ $ mkdir build ~ $ cd build
cmakeします。mitchTECHのサイトとはちょっと違うようで,下記サイトのようにビルドオプションをBUILD_NEW_PYTHON_SUPPORTにします。最後のピリオド2つ(..)も必要なので注意です。
~ $ cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D BUILD_NEW_PYTHON_SUPPORT=ON -D BUILD_EXAMPLES=ON ..
cmakeを実行すると,ビルドに不足しているパッケージなどが表示されます(version_string.tmpにも同じ内容が記録されます)。色々ずらーっと表示されますが,この時点では,『FFMPEG: NO』となっているはずです。FFMPEGは動画や音声の変換ソフトで,カメラや画像処理に必須かわかりませんが,上記のD's Lab Logのサイトでは『FFMPEG: YES』となっているので念のためlibswscale-devパッケージを追加しました。(NOのままビルドできるかは,試していないので不明です…)
~ $ sudo apt-get install libswscale-dev
改めてcmakeすると,『FFMPEG: YES』になります。私の環境でcmakeした結果は下記のようになりました。
General configuration for OpenCV 2.4.4 ===================================== Version control: unknown Platform: Host: Linux 3.6.11+ armv6l CMake: 2.8.9 CMake generator: Unix Makefiles CMake build tool: /usr/bin/make Configuration: RELEASE C/C++: Built as dynamic libs?: YES C++ Compiler: /usr/bin/c++ (ver 4.6.3) C++ flags (Release): -W -Wall -Werror=return-type -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -fdiagnostics-show-option -pthread -fomit-frame-pointer -ffunction-sections -O3 -DNDEBUG -DNDEBUG C++ flags (Debug): -W -Wall -Werror=return-type -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -fdiagnostics-show-option -pthread -fomit-frame-pointer -ffunction-sections -g -O0 -DDEBUG -D_DEBUG -ggdb3 C Compiler: /usr/bin/gcc C flags (Release): -W -Wall -Werror=return-type -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wundef -Winit-self -Wpointer-arith -Wshadow -fdiagnostics-show-option -pthread -fomit-frame-pointer -ffunction-sections -O3 -DNDEBUG -DNDEBUG C flags (Debug): -W -Wall -Werror=return-type -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wundef -Winit-self -Wpointer-arith -Wshadow -fdiagnostics-show-option -pthread -fomit-frame-pointer -ffunction-sections -g -O0 -DDEBUG -D_DEBUG -ggdb3 Linker flags (Release): Linker flags (Debug): Precompiled headers: YES OpenCV modules: To be built: core imgproc flann highgui features2d calib3d ml video objdetect contrib nonfree photo legacy gpu python stitching ts videostab Disabled: world Disabled by dependency: - Unavailable: androidcamera java ocl GUI: QT 4.x: NO GTK+ 2.x: YES (ver 2.24.10) GThread : YES (ver 2.32.4) GtkGlExt: NO OpenGL support: NO Media I/O: ZLib: /usr/lib/arm-linux-gnueabihf/libz.so (ver 1.2.7) JPEG: /usr/lib/arm-linux-gnueabihf/libjpeg.so (ver 80) PNG: /usr/lib/arm-linux-gnueabihf/libpng.so (ver 1.2.49) TIFF: /usr/lib/arm-linux-gnueabihf/libtiff.so (ver 42 - 3.9.6) JPEG 2000: build (ver 1.900.1) OpenEXR: build (ver 1.7.1) Video I/O: DC1394 1.x: NO DC1394 2.x: YES (ver 2.2.0) FFMPEG: YES codec: YES (ver 53.35.0) format: YES (ver 53.21.1) util: YES (ver 51.22.1) swscale: YES (ver 2.1.0) gentoo-style: YES GStreamer: NO OpenNI: NO OpenNI PrimeSensor Modules: NO PvAPI: NO GigEVisionSDK: NO UniCap: NO UniCap ucil: NO V4L/V4L2: Using libv4l (ver 0.8.8) XIMEA: NO Xine: NO Other third-party libraries: Use IPP: NO Use Eigen: NO Use TBB: NO Use OpenMP: NO Use GCD NO Use Concurrency NO Use C=: NO Use Cuda: NO Use OpenCL: NO Python: Interpreter: /usr/bin/python (ver 2.7.3) Libraries: /usr/lib/libpython2.7.so (ver 2.7.3) numpy: /usr/lib/pymodules/python2.7/numpy/core/include (ver 1.6.2) packages path: lib/python2.7/dist-packages Java: ant: NO JNI: NO Java tests: YES Documentation: Build Documentation: NO Sphinx: NO PdfLaTeX compiler: NO Tests and samples: Tests: YES Performance tests: YES C/C++ Examples: YES Install path: /usr/local cvconfig.h is in: /home/pi/OpenCV-2.4.4/build -----------------------------------------------------------------
いよいよビルドです。cmake-guiコマンドを使うと,ビルドのオプション(サンプルプログラムをビルドするか,など)を簡単に指定できるようですが,私の環境ではcmake-guiがうまく動かず,どのパッケージを除外してもよいか不明だったため,デフォルトのまますべてビルドしてしまいました^^;結果,10時間も待つはめに…。
ちなみに,SDカードはClass4でもClass10でも,ビルドにかかる時間はほぼ一緒でした。純粋にCPUのスペックが低いからこんなにかかるんですね…。
~ $ make ~ $ sudo make install
以上で終了です。インストール手順を紹介したサイトによっては,この後にbash.bashrcへのパス追加が必要とありますが,バージョンの違いのためか,やらなくてもサンプルプログラムは動きました。
この方法では,約1.8GByteのディスク容量を消費しました。
②apt-getコマンドを使う方法
apt-getを使うとコマンド一発で終わってしまいます。とっても便利。
~ $ sudo apt-get install libopencv-dev
インストールされたOpenCVのバージョンは,/usr/include/opencv2/core/version.hpp内に記述されています。
#define CV_MAJOR_VERSION 2 #define CV_MINOR_VERSION 3 #define CV_SUBMINOR_VERSION 1
この場合,バージョンは2.3.1です。
pythonからOpenCVを使うには,追加でパッケージが必要です。
~ $ sudo apt-get install python-opencv
以上で終了です。約200MByteのディスク容量を消費しました。
①と②では,②のほうが圧倒的にお手軽なので,とにかく試してみたい方におすすめです。マイナーバージョンの違いがどれだけ影響があるかは不明ですが…。
OpenCV2.3と2.4の違いは公式ページに載っています。
せっかく10時間も待ったので,2.4.4のほうを使っていこうと思います。
0 件のコメント:
コメントを投稿