雑食エンジニアの気まぐれレシピ

日ごろ身に着けた技術や見知った知識などの備忘録的なまとめ.主にRaspberry Piやマイコンを使った電子工作について綴っていく予定.機械学習についても書けるといいな.

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

を書いてライブラリの指定を行ってからビルド.

f:id:shikky_lab:20160609230159p:plain

(追加のオプションの指定)

 

ところがDSO missingが出て怒られた.どうもimwriteで怒られているらしい.

原因はimwriteの含まれるライブラリで,opencv3からはhighguiではなくopencv_imcodecsが必要らしい.

というわけで先ほどのオプションに-lopencv_imgcodecsを追加してビルドしてみると無事に通った.