RaspberryPi3にopencv3.1を導入してRaspiカメラモジュールを使う
RaspberryPi3で画像処理をするにあたり,とりあえずopencvを導入することに.
せっかくなので最新版のopencv3.1を自前でbuildして入れる.(opencv2.xで構わないという人はapt-getで入れられるのでそっちで入れた方がずっと楽)
opencvをbuildするための参考ページはいろいろ探してみたけど
Install guide: Raspberry Pi 3 + Raspbian Jessie + OpenCV 3 - PyImageSearch
ここが環境が完全に一致しているうえ,説明も丁寧で非常に分かりやすかった.結構長い手順だけど途中でpythonとvirtualenvの話をかなりがっつりやっているため,すでに入れている人やPythonを使う気がない人は無視してしまっていいかも.
opencvのmakeは結構重い作業で,二回ほど途中で止まっていた(再開したら何事もなく進むという謎).結局4コアすべて使って合計80分程度かかった.
opencvの準備はこれで完了だが,Raspiのカメラモジュールをopencvで使うためにはRaspicam_cvを導入する必要がある.
GitHub - cedricve/raspicam: AVA RaspiCam: C++ API for using Raspberry camera with/without OpenCv
READMEが結構詳しいため導入は割と順調に進んだ.動作確認のためにREADME下部にあるOpenCV Interfaceのサンプルコードをコンパイルしてみる.NetBeansの場合はプロジェクトプロパティのリンカ―タブの追加のオプションの項に
-lraspicam -lraspicam_cv -lopencv_core -lopencv_highgui
を書いてライブラリの指定を行ってからビルド.
(追加のオプションの指定)
ところがDSO missingが出て怒られた.どうもimwriteで怒られているらしい.
原因はimwriteの含まれるライブラリで,opencv3からはhighguiではなくopencv_imcodecsが必要らしい.
というわけで先ほどのオプションに-lopencv_imgcodecsを追加してビルドしてみると無事に通った.