IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> ROS1云课→12图像可视化 -> 正文阅读

[人工智能]ROS1云课→12图像可视化

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

[ 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

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


<?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吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-09-04 01:12:01  更:2022-09-04 01:16:36 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 22:41:41-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码