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 件のコメント:
コメントを投稿