导航

    蓝鲸ROS机器人论坛

    • 注册
    • 登录
    • 搜索
    • 版块
    • 话题
    • 热门
    ROS交流群
    ROS Group
    产品服务
    Product Service
    开源代码库
    Github
    官网
    Official website
    技术交流
    Technological exchanges
    激光雷达
    LIDAR
    ROS教程
    ROS Tourials
    深度学习
    Deep Learning
    机器视觉
    Computer Vision

    解决ROS的usb_cam节点无法正常读取mjpeg格式摄像头的方法

    技术交流
    usbcam
    1
    1
    5707
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • xiaoqiang
      xiaoqiang 最后由 编辑

      本文解决办法来源:http://answers.ros.org/question/217382/garbled-image-problem-on-usb_cam/

      使用usb_cam读取mjpeg格式的usb摄像头时,如果提示类似下述的错误,是因为链接的ffmpeg解码库存在问题。

      [mjpeg @ 0x223e460] overread 8
      [mjpeg @ 0x223e460] overread 8
      [mjpeg @ 0x223e460] error count: 68
      [mjpeg @ 0x223e460] error y=38 x=1
      [mjpeg @ 0x223e460] error count: 64
      [mjpeg @ 0x223e460] error y=34 x=1
      [mjpeg @ 0x223e460] error count: 68
      [mjpeg @ 0x223e460] error y=40 x=4
      [mjpeg @ 0x223e460] error count: 64
      [mjpeg @ 0x223e460] error y=42 x=1
      [mjpeg @ 0x223e460] error count: 64
      [mjpeg @ 0x223e460] error y=31 x=0
      [mjpeg @ 0x223e460] error count: 64
      [mjpeg @ 0x223e460] error y=30 x=37
      [mjpeg @ 0x223e460] overread 8
      

      解决办法是安装新版本的ffmpeg,然后修改usb_cam的cmake依赖库链接设置

      1.ffmpeg的安装
      mkdir ~/ffmpeg_sources
      cd ~/ffmpeg_sources
      wget http://ffmpeg.org/releases/ffmpeg-snapshot.tar.bz2
      tar xjvf ffmpeg-snapshot.tar.bz2
      cd ffmpeg
      PATH="$HOME/bin:$PATH" PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig"
      ./configure   --prefix="$HOME/ffmpeg_build"   --pkg-config-flags="--static"   --extra-cflags="-I$HOME/ffmpeg_build/include"   --extra-ldflags="-L$HOME/ffmpeg_build/lib"   --bindir="$HOME/bin"     --enable-shared --enable-pic --extra-cflags="-fPIC"
      make -j
      make install
      
      2. 现在ffmpeg开发库已经安装在home目录下的ffmpeg_build文件夹内,修改usb_cam的cmake文件

      为了方便自己,这里有一份已经修改好的usb_cam代码,git clone下来后,将CMakeLists.txt文件中对应下文部分的xiaoqiang替换成自己的用户名即可。ffmpeg库API一直在变化更新,上述修改好的usb_cam版本解决了这些匹配问题,因此推荐使用。

      ## pkg-config libraries
      ## find_package(PkgConfig REQUIRED)
      ## pkg_check_modules(avcodec libavcodec REQUIRED)
      ## pkg_check_modules(swscale libswscale REQUIRED)
      set(avutil_LIBRARIES /home/xiaoqiang/ffmpeg_build/lib/libavutil.so.55)
      set(avcodec_LIBRARIES /home/xiaoqiang/ffmpeg_build/lib/libavcodec.so.57)
      set(swscale_LIBRARIES /home/xiaoqiang/ffmpeg_build/lib/libswscale.so.4)
      set(ffmpeg_INCLUDE_DIRS  /home/xiaoqiang/ffmpeg_build/include/)
      
      3.执行catkin_make,重新编译usb_cam,问题解决

      例如

      cd ~/Documents/ros
      catkin_make
      
      4.对于蓝鲸智能的小强用户,现在使用下述命令可以正常以mjpeg方式获取小车的usb摄像头数据,修改launch文件中的分辨率为1920*1080还能获取30fps的1080p图像。
      roslaunch usb_cam ov2610mjpg.launch
      
      1 条回复 最后回复 回复 引用 0
      • 1 / 1
      • First post
        Last post
      Copyright © 2015-2023 BlueWhale community