ROS交流群
ROS Group 产品服务
Product Service 开源代码库
Github 官网
Official website 技术交流
Technological exchanges 激光雷达
LIDAR ROS教程
ROS Tourials 深度学习
Deep Learning 机器视觉
Computer Vision
ROS Group 产品服务
Product Service 开源代码库
Github 官网
Official website 技术交流
Technological exchanges 激光雷达
LIDAR ROS教程
ROS Tourials 深度学习
Deep Learning 机器视觉
Computer Vision
解决ROS的usb_cam节点无法正常读取mjpeg格式摄像头的方法
-
本文解决办法来源: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