Navigation

    蓝鲸ROS机器人论坛

    • Register
    • Login
    • Search
    • Categories
    • Tags
    • Popular
    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
    5709
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • xiaoqiang
      xiaoqiang last edited by

      本文解决办法来源: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 Reply Last reply Reply Quote 0
      • 1 / 1
      • First post
        Last post
      Copyright © 2015-2023 BlueWhale community