頑張って、長続きしたい。

メモ書きをひたすら書く。継続は力なり。

OpenCV + Webカメラ in Linux

Webカメラを使った画像処理のプログラムをlinuxで作りたかったのでOpenCVからWebカメラを使えるの環境を作った。

Windows上では簡単にできていたのに、色々と苦労した。


とりあえず,サンプルプログラムをそのまま動かしてみたけど,動かない。

lsusbコマンドでWebカメラが認識してるか確認してみたが,正常に認識してそう。

/usr/sbin/lsusb 
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 006: ID 046d:082d Logitech, Inc. HD Pro Webcam C920
Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 003: ID 0461:4d0f Primax Electronics, Ltd HP Optical Mouse
Bus 002 Device 004: ID 04f2:1060 Chicony Electronics Co., Ltd 
Bus 002 Device 005: ID 058f:6366 Alcor Micro Corp. Multi Flash Reader
Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

いろいろ調べて見るとlibv4lが入ってる状態でOpenCVを入れないと行けないみたい。

さかな前線 » Linuxでの野良ビルドのOpenCVでカメラをちゃんと使うにはlibv4l-devが必要みたい

apt-get install libv4l libv4l-devel

この状態でOpencv2.4.9を入れていく。

cmake -DBUILD_DOCS=ON -DBUILD_EXAMPLES=ON -DCMAKE_BUILD_TYPE=RELEASE -DWITH_TBB=ON -DWITH_GTK=ON -DWITH_OPENGL=ON -DWITH_QT=ON -DINSTALL_C_EXAMPLES=ON -DWITH_OPENCL=OFF -DWITH_CUDA=OFF -DWITH_OPENNI=ON -DWITH_UNICAP=ON -DWITH_V4L=ON -DWITH_XINE=ON .

make

しかしmakeでエラー。
modules/highgui/cap_libv4l.cppでエラー。

cmakeのオプションに-DWITH_LIBV4L=OFFを入れるとエラーがなくなった。

そのままmake installでサンプルプログラムが動くようになったが、エラーが出力された。

HIGHGUI ERROR: V4L/V4L2: VIDIOC_S_CROP

でも、一応動いてるからとりあえず今は放置で。


結局libv4lが必要というより、-WITH_V4L=ONになってたらいいのかな?
(前回はエラーが出た時に-WITH_V4L=OFFにしていた。)





【追記】

HIGHGUI ERROR: V4L/V4L2: VIDIOC_S_CROP

放置してたこのエラーのせいで、Webカメラの解像度が変えられないというちょい重大な問題発生。

v4l−utilsをソースからインストールして,OpenCVでcmakeの-DWITH_LIBV4L=OFFをONにすることで解決。

やっぱりlibv4lは必要だった(手のひら返し)