最近由于项目需要,需要同时开启多个摄像头,虽然可以用opencv去写对应的摄像头开启的程序 ; 但是,还是想用ros中提供的usb_cam去打开多个摄像头。

通过usb_cam去打开一个摄像头,不用下载源码,可以直接安装usb_cam去调用launch文件打开摄像头。

  • 安装方式:(ubuntu16.04)
 sudo apt-get install ros-kinetic-usb-cam
  • 安装方式:(ubuntu20.04)
sudo apt install ros-noetic-usb-cam
  • 打开摄像头(默认打开索引为0的摄像头)
roslaunch usb_cam usb_cam-test.launch
  • 如何查看摄像头索引
ls /dev/video*
  • 打开其他索引的摄像头需修改 usb_cam-test.launch文件中“video_device”这一项;把索引修改成想要打开的摄像头索引即可。
  <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>

安装源码方式打开摄像头:

  • 下载源码
git clone https://github.com/bosch-ros-pkg/usb_cam.git
  • 创建工作空间
    详情参照https://blog.csdn.net/xp_fangfei/article/details/123412772?spm=1001.2014.3001.5502
  • 把下载好的usb_cam放到新创建的工作空间的src下,进行编译即可。
  • usb_cam树结构
.
├── AUTHORS.md
├── CHANGELOG.rst
├── CMakeLists.txt
├── include
│   └── usb_cam
│       └── usb_cam.h
├── launch
│   ├── usb_cam-test.launch
├── LICENSE
├── mainpage.dox
├── nodes
│   └── usb_cam_node.cpp
├── package.xml
├── README.md
└── src├── LICENSE└── usb_cam.cpp
  • 同时打开多个摄像头只需要对应的去增加usb_cam_node.cpp节点即可;usb_cam_node.cpp中需要恩更改的内容如下:
# 修改内容一
usb_cam_node.cpp 中第89行 topic名称进行修改:
89 image_pub_ = it.advertiseCamera("image_raw", 1);
# 修改内容二
usb_cam_node.cpp 271行该节点去master中注册的节点名进行修改,以免造成相同名注册,编译错误
271 ros::init(argc, argv, "usb_cam");

Example 1:
我新建了一个名为usb_cam_node1.cpp的节点,修改如下:

89 image_pub_ = it.advertiseCamera("image_raw_new", 1);
271 ros::init(argc, argv, "usb_cam1");
  • 对应的CMakeLists.txt进行修改
add_executable  #添加对应节点名称的可执行文件名

Example 1:

#CMakeLists.txt中每增加一个节点,对应增加以下两部分内容
add_executable(${PROJECT_NAME}_node1 nodes/usb_cam_node1.cpp)
target_link_libraries(${PROJECT_NAME}_node1${PROJECT_NAME}${avcodec_LIBRARIES}${swscale_LIBRARIES}${catkin_LIBRARIES}
)
  • 对应的launch文件进行修改
<node name="usb_cam" pkg="usb_cam" type="usb_cam_node" output="screen" >
name="usb_cam" # 修改成相应的话题名,用来和其他节点话题名进行
type="usb_cam_node"  #修改成对应的节点名字

Example 1:
usb_cam-test1.launch 内容如下

<launch><node name="usb_cam_node1" pkg="usb_cam" type="usb_cam_node1" output="screen" ><param name="video_device" value="/dev/video1" /><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_node1" pkg="image_view" type="image_view" respawn="false" output="screen"><remap from="image" to="/usb_cam_node1/image_raw_new"/><param name="autosize" value="true" /></node>-->
</launch>
  • 每增加一个节点,对应一个launch文件;最后写一个launch文件去同时启动几个摄像头的launch文件,就可以实现usb_cam打开多个摄像头的功能了。

Example 1:

usb_cam-total.launch 内容如下:

<launch><include file="$(find usb_cam)/launch/usb_cam-test.launch" /><include file="$(find usb_cam)/launch/usb_cam-test1.launch" /></launch>

应用usb_cam同时打开多个摄像头方法相关推荐

  1. uniapp和vue实现打开手机前置摄像头和相机的方法

    最近在项目遇到了一个问题,用uniapp的框架做一个功能,就是打开平板自带的前置摄像头拍照,uniapp上的功能只有打开默认相机的功能,但是前置摄像头需要你自己去手动转换一下,客户体验感很不好,产品经 ...

  2. 【R9000P相机问题】打开相机应用摄像头无法使用,显示小锁的图标处理方法

    故障现象: 打开相机应用摄像头无法使用,显示小锁的图标 原因分析: 联想电脑管家里摄像头隐私模式开启有关. 打开相机应用摄像头无法使用,显示小锁的图标处理. 解决方法: 一.管家4.0版本工具箱截图: ...

  3. win7的计算机功能在那打开,win7系统照相机功能在哪?win7系统打开照相机功能的方法...

    win7系统自带有照相机功能,之前xp系统打开硬盘符下面有一个摄像头快捷方式,直接点击就可以照相了.那么升级到win7纯净版系统后却找不到照相机功能了,那么win7系统照相机功能在哪?大家可以从程序里 ...

  4. Opencv打开内置摄像头

    Opencv中VideoCapture是专门用来处理视频文件或者摄像头视频流的类,详细的说明和用法可以参考Opencv2.4.13的说明文档:点击打开链接 使用VideoCapture打开内置摄像头的 ...

  5. js调用pc摄像头实现拍照、录视频等,新版Chrome无访问http页面无法打开麦克风、摄像头

    js调用pc摄像头实现拍照.录视频等,新版Chrome无访问http页面无法打开麦克风.摄像头 新版Chrome配置 vue环境下的前端 function部分 ##由于没有https环境,只有http ...

  6. VMware虚拟机连接摄像头方法

    VMware虚拟机连接摄像头方法 这个网上找了很多资料都没成功,后来发现很简单, 我的版本是VM15 1.打开VM 启动 虚拟机 2.顶部菜单有虚拟机(M),点击后 点击 可移动设备(D) 3.选择你 ...

  7. 打开方式中选择默认方式无反映_Win7系统无法选择打开方式的解决方法

    习惯用win7系统的用户在使用过程中一定会遇到这个问题:有的时候想要打开PDF文件,如果不安装其他软件,单用默认的打开方式是打不开的,安装了软件之后,仍然找不到自己想要用的打开方式. 今天小编以打开P ...

  8. 电脑登陆不了网页的服务器地址,电脑能登qq不能打开网页的解决方法

    电脑只能上QQ,不能打开网页的解决方案,如果你曾经遇到过电脑的网络连接正常,可以使用QQ和好友联系,但是不能打开网页的情况,这主要是因为DNS服务器无法正常解析的问题,所以我们要进行手动dns设置.下 ...

  9. 安装了低版本Jdk后eclipse无法打开的终极解决方法

    安装了低版本Jdk后eclipse无法打开的终极解决方法 参考文章: (1)安装了低版本Jdk后eclipse无法打开的终极解决方法 (2)https://www.cnblogs.com/MrLiu6 ...

最新文章

  1. EcologyEvolution|微生物功能多样性从概念到应用
  2. SQL查询所有客人的第一次用餐时间
  3. linux cat 合并文本 中间添加分隔符
  4. 【Spring框架家族】mybatis generator代码自动生成(看得上眼直接拿去用即可)
  5. postman简单接口测试
  6. 用VC写Assembly代码(6)--附录1[堆和栈的区别]
  7. Mysql查询字段去除指定列重复数据
  8. centeros安装mysql_CenterOS上安装MySQL具体步骤
  9. php mysql敏感词_用PHP如何实现敏感词过滤
  10. Sakai3白皮书(中文版)
  11. 怎么修改谷歌浏览器文件提交按钮样式_谷歌浏览器主题美化自定义设置方法
  12. QT QLabel中字体行间距怎么设置?
  13. Java 常用数据类型(总结)
  14. xp系统搭建iscsi服务器,配置Microsoft Windows XP对MDS/IPS-8的iSCSI主机
  15. Lucene(全文检索框架) 简单实例
  16. 联想服务器开机显示英文,在开机自检时,在联想LOGO画面处死机(即自检时死机)...
  17. 大家谈之《区块链大革命》
  18. 一周企业财报 | 汉高、中通、格林酒店、宜人金科、宝尊、维他奶等7家企业发布业绩...
  19. Oracle 语句大全,确实不错,赶紧转走!
  20. 数据监控体系是什么?该怎么搭建?

热门文章

  1. 华硕笔记本安装Ubuntu 17.04版本
  2. iconv系列函数用法总结
  3. android searchview属性,SearchView的全面解析
  4. react界面设计步骤
  5. 推荐10个Java方向最热门的开源项目(8月)
  6. 青龙配置企业微信推送时出现错误
  7. Revit 2019 LookUp安装详解
  8. PS/2接口鼠标不能使用滚轮
  9. 20201205某互联网公司技术狂欢节知识总结及思考
  10. 七雄争霸服务器维护至几点,七雄争霸11月11日8-12点全区维护公告