使用前一篇中所述的配置方法,搭建出的基于arm-linux 的 OpenCV 对USB摄像头进行图像抓取,后面进一步会抓取视频。一开始抓取不了视频,VideoCapture 对象无法获取 /dev/video0 的设备。解决问题的思路贴下来,无耐心可跳过直接看最后:
VideoCapture打不开 isOpened 返回 false。
查看开发板的系统是否支持V4L2, multimedia -- > 内核配置
查看OpenCV编译的时候是否勾选了V4L2选项
初步定位到 OpenCV编译 cmake时选择 WITH_V4L
OpenCV 2.4.9 + Ubuntu 12.04 : cmake-gui 中没有 WITH_V4L 或者 WITH_LIBV4L 这个选项
/usr/include/linux/ videodev.h videdev2.h 这个貌似没问题(待定)
OpenCV 2.4.3 在我的机器上试验,cmake-gui中依然没有 WITH_V4L选项,但是室友的机器上是有的,排除OpenCV安装包版本的问题,可能存在机器配置差异的问题。
安装libv4l-dev试试 —— 重新配置cmake-gui中的Cache,找不到V4L相关的值
安装 libv4l* —— 重新配置cmake-gui中的Cache,找不到V4L相关的值
opencv-2.4.9/cmake/OpenCVCmakeFindLibsVideo.cmake :
ocv_clear_vars(HAVE_LIBV4L HAVE_CAMV4L HAVE_CAMV4L2 HAVE_VIDEOIO)
if(WITH_V4L)
if(WITH_LIBV4L)
CHECK_MUDULE(libv4l1 HAVE_LIBV4L)
endif()
CHECK_INCLUDE_FILE(linux/videodev.h HAVE_CAMV4L)
CHECK_INCLUDE_FILE(linux/videodev2.h HAVE_CAMV4L2)
CHECK_INCLUDE_FILE(sys/videoio.h HAVE_VIDEOIO