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は必要だった(手のひら返し)