ROS:使用usb_cam调用UVC摄像头遇到的坑

2023-05-16

目录

 

坑一:装包后直接启用,图像是花屏

坑二:deprecated pixel format used, make sure you did set range correctly


坑一:装包后直接启用,图像是花屏

直接使用如下命令安装usb_cam功能包:

sudo apt-get install ros-melodic-usb-cam

然后插上自己的UVC摄像头,运行如下指令:

roslaunch usb_cam usb_cam-test.launch

此时可以检测到摄像头,但出来的图像是花的,如下:

 在查看了摄像头的数据手册之后,发现摄像头的默认像素格式是mjpeg格式的:

 于是乎查看了usb_cam-test.launch,发现原始的launch文件中定义的像素格式是yuyv格式的(第六行):

<launch>
  <node name="usb_cam" pkg="usb_cam" type="usb_cam_node" output="screen" >
    <param name="video_device" value="/dev/video0" />
    <param name="image_width" value="640" />
    <param name="image_height" value="480" />
    <param name="pixel_format" value="yuyv" />
    <param name="camera_frame_id" value="usb_cam" />
    <param name="io_method" value="mmap"/>
  </node>
  <node name="image_view" pkg="image_view" type="image_view" respawn="false" output="screen">
    <remap from="image" to="/usb_cam/image_raw"/>
    <param name="autosize" value="true" />
  </node>
</launch>

所以,将上述"yuyv"改成"mjpeg" ,在运行相应的launch文件,就可以的到正常的图片了:

坑二:deprecated pixel format used, make sure you did set range correctly

但是此时终端中会出现如下图所示的提示 :

虽然看着并没有什么影响,但是对于我等强迫症患者来说简直等同于error(T_T) ,在网上找了下以下解决方法:

将usb_cam源码从GitHub上下载到工作空间中,然后在usb_cam源码src文件中找到usb_cam.cpp文件,大约在第430+行找到如下代码段:

  if (pic_size != avframe_camera_size_)
  {
    ROS_ERROR("outbuf size mismatch.  pic_size: %d bufsize: %d", pic_size, avframe_camera_size_);
    return;
  }
  video_sws_ = sws_getContext(xsize, ysize, avcodec_context_->pix_fmt, xsize, ysize, AV_PIX_FMT_RGB24, SWS_BILINEAR, NULL,
			      NULL,  NULL);
  sws_scale(video_sws_, avframe_camera_->data, avframe_camera_->linesize, 0, ysize, avframe_rgb_->data,
            avframe_rgb_->linesize);
  sws_freeContext(video_sws_);

在代码段:video_sws_ = sws_get...  位置上面一行插入以下代码:

  {
    AVPixelFormat pixFormat;
    switch (avcodec_context_->pix_fmt) {
    case AV_PIX_FMT_YUVJ420P :
        pixFormat = AV_PIX_FMT_YUV420P;
        break;
    case AV_PIX_FMT_YUVJ422P  :
        pixFormat = AV_PIX_FMT_YUV422P;
        break;
    case AV_PIX_FMT_YUVJ444P   :
        pixFormat = AV_PIX_FMT_YUV444P;
        break;
    case AV_PIX_FMT_YUVJ440P :
        pixFormat = AV_PIX_FMT_YUV440P;
        break;
    default:
        pixFormat = avcodec_context_->pix_fmt;
        break;
    }
    avcodec_context_->pix_fmt = pixFormat;
  }

然后保存、重新编译、source devel/setup.bash、运行launch文件、完美解决问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ROS:使用usb_cam调用UVC摄像头遇到的坑 的相关文章

  • macOS下如何查找串口的父USB设备?

    以下是我尝试枚举 Mac 上找到的所有串行端口 并遍历设备节点树以查找 USB 串行适配器的父 USB 设备的方法 import
  • 检测 Android 上的 USB 网络共享

    有没有什么方法可以 以编程方式 在您的活动 应用程序中知道用户已在其手机上启用 USB 网络共享 您还可以使用反射来访问用于设置 USB 网络共享的隐藏功能 这是我的代码 ConnectivityManager cm Connectivit
  • 如何禁用 Android 设备 USB 端口

    我正在尝试搜索是否有一种方法可以禁用 Android 设备 USB 端口 主要是软件级别 因此用户仍然可以为 Android 设备充电 但无法再与 PC 通信 我得到了一些线索link1 https groups google com fo
  • 在 Mac OSX 下检测连接的 USB 设备

    首先声明 对于 Mac 编程 我是一个新手 然而 我有一项任务需要与设备进行 USB 通信 所以我想我将从基本的东西开始 我从here https developer apple com library mac samplecode USB
  • 如何使用 PyQT5 连接和分离外部应用程序或对接外部应用程序?

    我正在使用 ROS 为多机器人系统开发 GUI 但我对界面中最不想做的事情感到困惑 在我的应用程序中嵌入 RVIZ GMAPPING 或其他屏幕 我已经在界面中放置了一个终端 但我无法解决如何向我的应用程序添加外部应用程序窗口的问题 我知道
  • 如何阻止 Linux 初始化 USB HID 设备

    我有一个 USB HID 设备 可以在两种不同的模式下工作 模式的选择基于发送给它的 USB 枚举 初始化数据包的顺序 我使用的是运行 Raspbian 的 Raspberry Pi 3 但是如果我为桌面 Ubuntu 发行版编译代码 我也
  • 如何拦截并翻译USB事件

    我想使用飞利浦 LFH 2330 查看图像 使用 Windows Image Viewer 或其他查看器 如 IrfanView 等 LFH 2330 是一款带有四个踏板的脚踏控制器 参见here http www aaaaudio net
  • Java Android 激光条码扫描器

    我正在尝试开发一个能够读取条形码 1d 而不是 qr 的应用程序 真正的问题是 常见的条形码阅读器软件非常有用 但它们似乎太慢 无法作为非常频繁和常见的功能使用 这些条形码相当长 有 20 30 位数字 对于 zxing 等应用程序来说似乎
  • 使用 C# 向 USB 连接的 GPRS 调制解调器发送 AT 命令

    任何人都可以给我一个关于如何访问连接到 USB 端口的 GPRS 调制解调器的良好指示或指南 我应该为我的程序制作一个 USB 驱动程序以将 AT 命令发送到调制解调器吗 或者就像一个路由器 我可以使用IP地址访问它 谢谢 如果 Windo
  • 通过 USB 记忆棒携带和操作整个开发盒。可行的?

    最近我一直在考虑投资一个有价值的 USB 笔式驱动器 类似于 并在虚拟机上安装操作系统并开始在其上进行开发 我的想法是 我希望能够携带我的开 发箱 成为一名Windows 发行版用于 Net 开发和Linux发行版像 RoR Perl 之类
  • 如何在PyUsb中绑定/取消绑定USB设备?

    我需要在 python 脚本上打开 关闭多个 USB 设备 我可以使用 PyUsb 绑定和取消绑定 USB 设备吗 我可以使用 shell 命令来做到这一点 关闭电源 echo device nuber gt sys bus usb dri
  • libv4l2:打开流时出错:设备上没有剩余空间

    我尝试为 opencv 获取立体声对 我将 Logitech B910 和 Logitech C910 网络摄像头连接到 USB 但有这个错误 我玩弄了怪癖参数并设置outfmt mjpeg在mplayer中 但又出现此错误 在哪里可以找到
  • OSX:如何从 IOUSBDeviceInterface 或位置 id 获取卷名称(或 bsd 名称)

    我正在尝试编写一个应用程序 将特定的 USB 字符串描述符 USB 大容量存储设备 与其卷或 bsd 名称相关联 因此 代码会遍历所有连接的 USB 设备 获取字符串描述符并从其中之一提取信息 我想获取这些 USB 设备的卷名 我找不到合适
  • WriteFile 返回错误代码 87

    我正在开发一个写入 HID 设备的程序 但收到错误 87 WriteFile 函数参数无效 我从 Jan Axelson 的 USB Complete 获得了这些功能 所以我不确定为什么会收到错误 我用它来查找我的设备 private vo
  • 在 Python 中将 USB 视频捕获设备友好名称与 OpenCV 端口号相关联

    我想在 Windows 平台上使用 Python 获取外部 USB 视频捕获设备的友好名称和 USB 端口号 我正在使用 OpenCV 从 USB 捕获设备捕获视频 OpenCV 将 USB 端口称为 1 找到的第一个工作摄像头 0 对我来
  • 无法在 Ubuntu 20.04 上安装 ROS Melodic

    我正在尝试使用这些命令在 Ubuntu 20 04 上安装 ROS Melodic sudo sh c echo deb http packages ros org ros ubuntu lsb release sc main gt etc
  • 适用于 Android 的 USB 主机

    I am trying to communicate with my freeduino board which is similar to arduino uno via usb through android device nexus
  • Android:如何以编程方式连接/断开 OTG

    我想在我的 Android 设备中以编程方式连接和断开 USB OTG 笔式驱动器 硬盘驱动器等 对于USB 我使用以下路径在连接到PC时绑定 取消绑定USB sys bus usb drivers usb bind or unbind 我
  • 在 Linux (libusb-1.0) 上访问 USB 设备?

    我正在编写一个小程序 使用 Linux 上的 libusb 1 0 与特定 USB HID 产品 由供应商和产品 ID 标识 进行通信 现在 我必须以 root 身份运行该程序 因为 libusb 需要对 USB 设备节点的写访问权限 有没
  • 获取已连接 USB 设备的端口名称

    当USB设备连接到计算机时 如何使用C 代码获取它所连接的端口名称 我找到了很多方法来查找 USB 何时连接 断开 驱动器号 路径 设备 ID 等 但没有找到任何明确的示例来说明如何知道它连接到哪个端口 我看到了一种可能的解释 但这涉及很多

随机推荐

  • 多模态数据集预处理方法

    摘要 对文本是单个词语的一般采用词袋特征 图片可以采用多种灵活的处理方式 对文本是句子甚至是段落的则需要采用较为复杂的处理方式 xff0c 参考文献 1 2 中对Wiki和Pascal Sentence数据集的处理方式 Wiki 参考文献
  • Numpy删除指定行

    删除Numpy数组中指定的某些行 函数 xff1a np delete span class token comment 示例 span span class token keyword import span numpy span cla
  • Pytorch排查训练过程中出现nan值的位置

    span class token keyword import span torch span class token comment 正向传播 span torch span class token punctuation span au
  • JupyterLab配置远程访问

    新版本的jupyter lab似乎和之前版本的不大一样 目录 生成配置文件设置密码安装插件将 96 Test 96 环境写入jupyterlab设置远程访问其他 生成配置文件 jupyter lab generate config 设置密码
  • Anaconda多用户配置指北

    适用于实验室深度学习服务器配置 创建用户组 groupadd stu配置conda xff0c 参考这里新创建的用户加入stu组 xff0c 并指定家目录useradd d home media m g stu xpt xff0c 为不同用
  • Hexo/Github.io 配置腾讯云CDN

    前言 使用Github io搭建自己的博客时可能会遇到访问速度不理想的情况 xff0c 可以采用如下几种方案解决 xff1a 将Hexo部署到阿里云 xff08 点击查看 xff09 xff0c 直接访问阿里云 xff0c 但这种方式会暴露
  • slam定位学习笔记(七)-g2o学习

    主要学习的是这篇文章 xff0c 但大佬并没有在文章里面仔细的讲g2o xff0c 所以我在网上找了这几篇介绍g2o的文章 xff0c 讲的十分详细 xff0c 对入门十分友好 xff1a 文章一 文章二 文章三 xff0c 这三篇都是一个
  • XTDorne平台搭建无人机仿真环境时遇到的问题及解决

    XTDorne平台搭建无人机仿真环境时遇到的问题及解决 PX4安装过程中遇到的问题及解决 PX4安装过程中遇到的问题及解决 执行make px4 sitl default gazebo遇到的问题 问题1 xff1a No package 3
  • 使用Adobe软件镜像pdf页面

    直接上图 xff1a 之后确定保存路径就OK
  • docker安装指定版本(替换安装)

    1 docker安装 如果本地之前安装过docker版本 xff0c 需要先卸载 yum y remove docker docker client docker client latest docker common docker lat
  • 虚拟机下CentOS8 无法上网的问题解决办法

    1 首先切换成管理员身份 xff0c root是我之前设置的管理员账号 xff0c 可能会有不同 su root 之后输入密码即可 2 然后进入目录修改配置信息 cd etc sysconfig network scripts 使用ll命令
  • Python+pycharm安装dlib库

    目录 下载dilb库方法一 xff1a 使用pip安装dlib库方法二 xff1a 使用pycharm进行安装导入dlib库成功 下载dilb库 写在前面 xff1a 尽量要用对应Python版本的库 已经安装好Python3 6 1和py
  • C++ 指向 Void 的指针

    C 43 43 指向 Void 的指针 在 C 43 43 中 xff0c 不能将一种数据类型的变量地址赋值给另一种数据类型的指针 指针是int类型 int ptr 变量为双精度类型 double d 61 9 0 错误 无法将 doubl
  • ESP8266-01STA模式的使用

    ESP8266 01STA模式的使用 xff1a 需要的原料 xff1a 1 XCOM V2 0 exe软件提取地址 2 USB TTL的下载器或者WiFi模块专用的下载器 3 手机网络助手 xff08 直接到手机浏览器下载即可 xff09
  • 《大数据》2015年第3期“研究”——大数据流式计算:应用特征和技术挑战

    大数据流式计算 xff1a 应用特征和技术挑战 孙大为 xff08 中国地质大学信息工程学院 北京 100083 xff09 摘要 xff1a 在大数据时代 xff0c 数据的时效性日益突出 xff0c 数据的流式特征更加明显 xff0c
  • 作者:孙大为,男,博士后,中国地质大学(北京)信息工程学院讲师。

    孙大为 xff0c 男 xff0c 博士后 xff0c 中国地质大学 xff08 北京 xff09 信息工程学院讲师 xff0c 目前主要从事大数据计算 云计算 可信计算等方面的研究工作
  • 人工智能在医学影像中的研究与应用

    人工智能在医学影像中的研究与应用 韩冬 李其花 蔡巍 夏雨薇 宁佳 黄峰 沈阳东软医疗系统有限公司 xff0c 辽宁 沈阳 110167 慧影医疗科技 xff08 北京 xff09 有限公司 xff0c 北京 100192 东软集团股份有限
  • 联邦学习攻击与防御综述

    联邦学习攻击与防御综述 吴建汉1 2 司世景1 王健宗1 肖京1 1 平安科技 xff08 深圳 xff09 有限公司 xff0c 广东 深圳 518063 2 中国科学技术大学 xff0c 安徽 合肥 230026 摘要 xff1a 随着
  • 如何将数组转换为JSON数据?

    如何将数组转换为JSON数据 xff1f 下面本篇就来给大家介绍一下将数组转换为JSON对象的方法 xff0c 希望对大家有所帮助 方法一 xff1a 使用Object assign Object assign 方法将枚举的所有属性的值从源
  • ROS:使用usb_cam调用UVC摄像头遇到的坑

    目录 坑一 xff1a 装包后直接启用 xff0c 图像是花屏 坑二 xff1a deprecated pixel format used make sure you did set range correctly 坑一 xff1a 装包后