ARM + OpenCV 抓取摄像头图像 && 一点感想

本文记录了在ARM Linux环境下,使用OpenCV从USB摄像头抓取图像的过程。在解决VideoCapture无法打开设备/dev/video0的问题上,通过调整cmake配置最终成功实现图像捕获。作者强调了理解技术原理的重要性,认为这能帮助开发者避免和更快地解决实践中遇到的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用前一篇中所述的配置方法,搭建出的基于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)
  
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值