前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ROS1云课→12图像可视化

ROS1云课→12图像可视化

作者头像
zhangrelay
发布2022-09-27 16:58:30
1.7K0
发布2022-09-27 16:58:30
举报

ROS1云课→11曲线绘制


从二维曲线过渡到二维视频流,如何在蓝桥ROS中进行实践学习呢。

如上是算法实践的基础,比如人脸识别,车道识别算法,怎么做,云端也没啥摄像头。

使用video_stream_opencv,下面详细介绍。


在ROS1系统中,可以创建一个节点,在节点中展示来自即插即用摄像头的图像(云端可以用视频流)。这是一个复杂数据主题的例子,这些数据可以使用特殊工具更好地可视化或分析。只需要一个摄像头(或者一段视频)来完成这些,例如笔记本上的webcam(或一些符合标准的视频文件)。在这个案例中,通过调用OpenCV库实现一段基本的摄像头(或视频)捕捉程序,然后在ROS中将采集到的cv::Mat图像转换到ROS图像,这样就可以在主题中发布了。这个节点会在/camera主题里发布图像帧。

使用rosrun运行节点并进行图像捕捉和发布工作。节点中的代码对于读者来说可能很陌生,但是在后面的课程中,会介绍如何在ROS中使用摄像头(或者视频)和图像,到时候再回来看这些代码,就会完全理解节点的工作原理和每行代码的含义:


rosrun video_stream_opencv video_stream _video_stream_provider:=3d_mapping.mp4

代码语言:javascript
复制
[ INFO] [1661869321.091075568]: Resource video_stream_provider: 3d_mapping.mp4
[ INFO] [1661869321.091177650]: Getting video from provider: 3d_mapping.mp4
[ INFO] [1661869321.101022675]: Video stream provider type detected: videofile
[ INFO] [1661869321.101886789]: Camera name: camera
[ INFO] [1661869321.102684898]: Setting camera FPS to: 30
[ INFO] [1661869321.102730771]: Camera reports FPS: 23.976
[ INFO] [1661869321.103452704]: Setting buffer size for capturing frames to: 100
[ INFO] [1661869321.104175990]: Throttling to fps: 240
[ INFO] [1661869321.104899852]: Publishing with frame_id: camera
[ INFO] [1661869321.105675786]: Provided camera_info_url: ''
[ INFO] [1661869321.106396018]: Flip horizontal image is: false
[ INFO] [1661869321.106985600]: Flip vertical image is: false
[ INFO] [1661869321.109821221]: using default calibration URL
[ INFO] [1661869321.109877421]: camera calibration URL: file:///home/shiyanlou/.ros/camera_info/camera.yaml
[ INFO] [1661869321.109961349]: Unable to open camera calibration file [/home/shiyanlou/.ros/camera_info/camera.yaml]
[ WARN] [1661869321.109995031]: Camera calibration file /home/shiyanlou/.ros/camera_info/camera.yaml not found.
[ INFO] [1661869321.110029900]: Opened the stream, starting to publish.

一旦节点运行起来,我们就能够列出主题列表(rostopic list),并查看是否包含/camera 主题。查看是否正确捕捉到图像有一个简单直接的方法,使用rostopic hz /camera语句查看在主题中收到的图像更新频率是多少。频率通常是30Hz,如下图所示:

显示视频

想要查看视频,不能直接使用rostopic echo /camera命令,因为这会使用文本格式输出图片的信息,数据量会非常巨大,不可能进行任何有效的分析。因此,会调用下面的命令:

$ rosrun image_view image_view image:=/camera

这里使用了image_view节点,在窗口中展示了给定主题(使用image参数)的图像,如下图所示。这样我们就能简单直接地显示在主题内发布的每一幅图像或帧,即使数据来自网络也可以实现。你可以通过在窗口中点击右边的按钮将当前帧保存在硬盘里,通常会存在home目录下或者~/.ros目录下。

ROS Kinetic还有rqt_image_view,支持在一个窗口查看多个图像,但不允许点击右边按钮保存图像。我们可以在GUI上手动选择图像主题或使用image_view:

$ rosrun rqt_image_view rqt_image_view

前面命令结果如下图所示:


代码语言:javascript
复制
<?xml version="1.0"?>
<launch>
   <!-- launch video stream -->
   <include file="$(find video_stream_opencv)/launch/camera.launch" >
        <!-- node name and ros graph name -->
        <arg name="camera_name" value="videofile" />
        <!-- full path to the video file -->
        <!-- wget http://techslides.com/demos/sample-videos/small.mp4 -O /xxx/xxx.mp4 -->
        <arg name="video_stream_provider" value="/xxx/xxx.mp4" />
        <!-- set camera fps to (video files not affected) -->
        <!-- <arg name="set_camera_fps" value="30"/> -->
        <!-- set buffer queue size of frame capturing to -->
        <arg name="buffer_queue_size" value="1000" />
        <!-- throttling the querying of frames to -->
        <arg name="fps" value="30" />
        <!-- setting frame_id -->
        <arg name="frame_id" value="videofile_frame" />
        <!-- camera info loading, take care as it needs the "file:///" at the start , e.g.:
        "file:///$(find your_camera_package)/config/your_camera.yaml" -->
        <arg name="camera_info_url" value="" />
        <!-- flip the image horizontally (mirror it) -->
        <arg name="flip_horizontal" value="false" />
        <!-- flip the image vertically -->
        <arg name="flip_vertical" value="false" />
        <!-- enable looping playback -->
        <arg name="loop_videofile" value="true" />
        <!-- visualize on an image_view window the stream generated -->
        <arg name="visualize" value="true" />
   </include>
</launch>

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-08-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
人脸识别
腾讯云神图·人脸识别(Face Recognition)基于腾讯优图强大的面部分析技术,提供包括人脸检测与分析、比对、搜索、验证、五官定位、活体检测等多种功能,为开发者和企业提供高性能高可用的人脸识别服务。 可应用于在线娱乐、在线身份认证等多种应用场景,充分满足各行业客户的人脸属性识别及用户身份确认等需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档