我是靠谱客的博主 笨笨冰棍,最近开发中收集的这篇文章主要介绍ROS订阅视频流(获取摄像头视频流),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

web_video_server包的主要功能是,在ROS系统中,比如某些话题发布了图像、视频的话题,通过这个功能包可以订阅这些话题,然后对图像压缩,通过网络传输出去,这样我们就可以通过网络的方式获取到这些图像和话题。
(This package provides a video stream of a ROS image transport topic that can be accessed via HTTP. )
详情:http://wiki.ros.org/web_video_server

安装web-video-server

#sudo apt-get install ros-indigo-web-video-server

web-video-server 只有一个节点 node名称为web-video-server
而且有很多参数,所以我们可以写一个launch文件进行配置

 # roscd web_video_server
 # mkdir launch
 # vim web_video.launch

其中web_video.launch文件内容,参考如下:

<launch>
  <node pkg="web_video_server" type="web_video_server" name="web_video_server" output="screen">
    <param name="port" type="int" value="8080" />
    <param name="address" type="string" value="127.0.0.1" />
    <param name="server_threads" type="int" value="1" />
    <param name="ros_threads" type="string" value="2" />

    <param name="width" type="int" value="1280" />
    <param name="height" type="int" value="1080" />
    <param name="quality" type="int" value="90" />

  </node>
</launch>

详细参数可查看ROS官方文档:http://wiki.ros.org/web_video_server

使用web_video_server首先要有一个视频流,这里我们可以使用uvc_camera软件包,提供电脑自带摄像头捕获的视频流

安装uvc_camera

首先,需要配置自己的.launch文件:

 #  roscd uvc_camera
  #  ls
  #  cd launch //定位到 uvc_camera的launch文件夹下(其实launch文件的位置不限定,只是runlaunch的时候当前目录是软件包目录,使用相对路径比较简单而已)
  #  vim my_camera_node.launch

其中my_camera_node.launch文件如下:

<launch>  
  <node pkg="uvc_camera" type="uvc_camera_node" name="uvc_camera" output="screen">  
    <param name="width" type="int" value="1920" />  
    <param name="height" type="int" value="1080" />  
    <param name="fps" type="int" value="30" />  
    <param name="frame" type="string" value="wide_stereo" />  

    <param name="auto_focus" type="bool" value="False" />  
    <param name="focus_absolute" type="int" value="0" />  
    <!-- other supported params: auto_exposure, exposure_absolute, brightness, power_line_frequency -->  

    <param name="device" type="string" value="/dev/video0" />  
    <param name="camera_info_url" type="string" value="file://$(find uvc_camera)/example.yaml" />  
  </node>  
</launch>  

测试,自己的Launch文件,要在launch文件夹下运行

runlaunch my_camera_node.launch

启动

roslaunch uvc_camera my_camera.launch

测试和查看uvc_camera安装结果

为了验证自己uvc_camera是否安装成功,首先进行查看

#    rospack list //查看package列表中是否有uvc_camera
#    rospack find uvc_camera //这个就是我们刚才安装时候的路径
#    roscd uvc_camera //定位到这个功能包的路径下
#    rosls //查看它的文件结构

.launch文件是一个多节点同时运行的一个配置文件
src是源码文件夹

测试一下是否能用 uvc_camera获取到图像

 # roscore
 # rosrun uvc_camera uvc_camera_node
 # rqt_image_view //选择话题为/image_raw

如果看到该话题传送的视频流图像,说明uvc_camera可以正常运行

使用web_video_server 传送视频流

启动web_video_server 来订阅视频流话题,然后压缩后发出

# roslaunch web_video_server web_video.launch

最后在浏览器中查看
http://127.0.0.1:8080/stream_viewer?topic=/image_raw
这里有在launch文件指定的IP 端口    
/image_raw是uvc_camera发布的视频流话题名称**,如果有其他传送视频流的话题,也可以通过这个方式查看啦~**

最后

以上就是笨笨冰棍为你收集整理的ROS订阅视频流(获取摄像头视频流)的全部内容,希望文章能够帮你解决ROS订阅视频流(获取摄像头视频流)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(58)

评论列表共有 0 条评论

立即
投稿
返回
顶部