应用usb_cam同时打开多个摄像头方法
最近由于项目需要,需要同时开启多个摄像头,虽然可以用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同时打开多个摄像头方法相关推荐
- uniapp和vue实现打开手机前置摄像头和相机的方法
最近在项目遇到了一个问题,用uniapp的框架做一个功能,就是打开平板自带的前置摄像头拍照,uniapp上的功能只有打开默认相机的功能,但是前置摄像头需要你自己去手动转换一下,客户体验感很不好,产品经 ...
- 【R9000P相机问题】打开相机应用摄像头无法使用,显示小锁的图标处理方法
故障现象: 打开相机应用摄像头无法使用,显示小锁的图标 原因分析: 联想电脑管家里摄像头隐私模式开启有关. 打开相机应用摄像头无法使用,显示小锁的图标处理. 解决方法: 一.管家4.0版本工具箱截图: ...
- win7的计算机功能在那打开,win7系统照相机功能在哪?win7系统打开照相机功能的方法...
win7系统自带有照相机功能,之前xp系统打开硬盘符下面有一个摄像头快捷方式,直接点击就可以照相了.那么升级到win7纯净版系统后却找不到照相机功能了,那么win7系统照相机功能在哪?大家可以从程序里 ...
- Opencv打开内置摄像头
Opencv中VideoCapture是专门用来处理视频文件或者摄像头视频流的类,详细的说明和用法可以参考Opencv2.4.13的说明文档:点击打开链接 使用VideoCapture打开内置摄像头的 ...
- js调用pc摄像头实现拍照、录视频等,新版Chrome无访问http页面无法打开麦克风、摄像头
js调用pc摄像头实现拍照.录视频等,新版Chrome无访问http页面无法打开麦克风.摄像头 新版Chrome配置 vue环境下的前端 function部分 ##由于没有https环境,只有http ...
- VMware虚拟机连接摄像头方法
VMware虚拟机连接摄像头方法 这个网上找了很多资料都没成功,后来发现很简单, 我的版本是VM15 1.打开VM 启动 虚拟机 2.顶部菜单有虚拟机(M),点击后 点击 可移动设备(D) 3.选择你 ...
- 打开方式中选择默认方式无反映_Win7系统无法选择打开方式的解决方法
习惯用win7系统的用户在使用过程中一定会遇到这个问题:有的时候想要打开PDF文件,如果不安装其他软件,单用默认的打开方式是打不开的,安装了软件之后,仍然找不到自己想要用的打开方式. 今天小编以打开P ...
- 电脑登陆不了网页的服务器地址,电脑能登qq不能打开网页的解决方法
电脑只能上QQ,不能打开网页的解决方案,如果你曾经遇到过电脑的网络连接正常,可以使用QQ和好友联系,但是不能打开网页的情况,这主要是因为DNS服务器无法正常解析的问题,所以我们要进行手动dns设置.下 ...
- 安装了低版本Jdk后eclipse无法打开的终极解决方法
安装了低版本Jdk后eclipse无法打开的终极解决方法 参考文章: (1)安装了低版本Jdk后eclipse无法打开的终极解决方法 (2)https://www.cnblogs.com/MrLiu6 ...
最新文章
- EcologyEvolution|微生物功能多样性从概念到应用
- SQL查询所有客人的第一次用餐时间
- linux cat 合并文本 中间添加分隔符
- 【Spring框架家族】mybatis generator代码自动生成(看得上眼直接拿去用即可)
- postman简单接口测试
- 用VC写Assembly代码(6)--附录1[堆和栈的区别]
- Mysql查询字段去除指定列重复数据
- centeros安装mysql_CenterOS上安装MySQL具体步骤
- php mysql敏感词_用PHP如何实现敏感词过滤
- Sakai3白皮书(中文版)
- 怎么修改谷歌浏览器文件提交按钮样式_谷歌浏览器主题美化自定义设置方法
- QT QLabel中字体行间距怎么设置?
- Java 常用数据类型(总结)
- xp系统搭建iscsi服务器,配置Microsoft Windows XP对MDS/IPS-8的iSCSI主机
- Lucene(全文检索框架) 简单实例
- 联想服务器开机显示英文,在开机自检时,在联想LOGO画面处死机(即自检时死机)...
- 大家谈之《区块链大革命》
- 一周企业财报 | 汉高、中通、格林酒店、宜人金科、宝尊、维他奶等7家企业发布业绩...
- Oracle 语句大全,确实不错,赶紧转走!
- 数据监控体系是什么?该怎么搭建?