4.2OpenCV-运动分析类、OpenCV-对象分割类、 OpenCV-颜色过滤器类、OpenCV-简单图像处理类

4.2.6 OpenCV-运动分析类

本节内容介绍OpenCV中的运动分析类demo

4.2.6.1 goodfeature_track 角点检测

机器人端启动摄像头roslaunch robot_vision robot_camera.launch

机器人端启动角点检测roslaunch robot_vision goodfeature_track.launch

PC 启动rqt_image_view工具/goodfeature_track/image/compressed

可以看到图像中出现了一些比较明显的特征点和角。

4.2.6.2 camshift 物体检测

机器人端启动摄像头roslaunch robot_vision robot_camera.launch

PC 启动物体跟踪roslaunch robot_vision camshift.launch debug_view:=true

用一款PCB板做个示范,鼠标左键框选中板子以后,移动板子就可以看到板子是被追踪的。这个就是利用检测到的特征点来实现的持续追踪。

4.2.6.3 fback_flow 稠密光流

机器人端启动摄像头roslaunch robot_vision robot_camera.launch

机器人端启动roslaunch robot_vision fback_flow.launch

PC 启动rqt_image_view工具/fback_flow/image/compressed

所谓光流,是指前后两帧图像中物体的位置变化会有一个流向。它用来追踪物体运动的趋势,此时可以看到屏幕上有很对小绿点,当画面静止的时候绿点均匀分布。当手持PCB板移动的时候就能看到物体运动方向被标识出来了。

以下还有几个运动分析相关的历程可供大家自行运行尝试

4.2.6.4 lk_flow 稀疏光流

机器人端启动摄像头roslaunch robot_vision robot_camera.launch

PC roslaunch robot_vision lk_flow.launch debug_view:=true

4.2.6.5 phase_corr 相位法光流

机器人端启动摄像头roslaunch robot_vision robot_camera.launch

PC 启动roslaunch robot_vision phase_corr.launch debug_view:=true

4.2.6.6简单光流检测:

机器人端启动摄像头roslaunch robot_vision robot_camera.launch

PC 启动roslaunch robot_vision simple_flow.launch debug_view:=true

4.2.7OpenCV-对象分割类

本节内容介绍OpenCV中的对象分割类demo的运行

4.2.7.1物体分割 segment_objects

机器人端启动摄像头roslaunch robot_vision robot_camera.launch

机器人端启动对象分割roslaunch robot_vision segment_objects.launch

PC 用两个终端打开两个rqt_image_view工具,分别订阅/image_raw/compressed和/segment_objects/image/compressed

在右侧的图像原本是全黑的,当PCB板突然出现在摄像头下时。就会在右侧黑色背景下显示出来。

当我们对一幅图像的某一个区域感兴趣并且它有明显变化时,就可以通过对象分割的方法将感兴趣的区域提取出来。

这种方法有一个缺陷,当变化停止时显示会逐渐变成黑色直至完全变成黑色背景,因此它无法选择自己想要提取的物体。

4.2.7.2分水岭分割 watershed_segmentation

机器人端启动roslaunch robot_vision robot_camera.launch

PC端启动roslaunch robot_vision watershed_segmentation.launch debug_view:=true

此时出现的是摄像头获取到的正常图像

可以看到现在左侧就是正常的摄像头获取的图像。这个时候鼠标右键在左侧图像中的白色小盒子区域上划一条线,右侧图像显示中就会出现选定的这一小块区域。

当我们继续完善,把每个部分的图像都划一遍就会出现完整的分割图,每块区域都界限分明。

4.2.8 OpenCV-颜色过滤器类

本节内容介绍OpenCV中的颜色过滤器类demo的运行

4.2.8.1 rgb色彩空间过滤 rgb_color_filter

机器人端启动摄像头roslaunch robot_vision robot_camera.launch

机器人端启动RGB颜色过滤器roslaunch robot_vision rgb_color_filter.launch

PC 用两个终端打开两个rqt_image_view工具,分别订阅/image_raw/compressed和/rgb_color_filter/image/compressed

一下就分别是过滤后和原图

所谓的颜色过滤器是指对右侧的原图中的颜色做分析,例如我们对电池的绿色做一个参数调整。

PC 启动动态调参工具rosrun rqt_reconfigure rqt_reconfigure

这里我们通过修改红,绿,蓝的参数就可以只将蓝色电池显示出来。

这里细心的朋友就会发现,我们调整显示蓝色的时候并不是直接把红色跟绿色关了只留蓝色。而且输出的图像也不仅仅是蓝色有显示,边上黑色部分也有显示。

这是因为自然界的颜色都是通过红绿蓝三种颜色通过不同的配比参杂出来的例如(红)+(绿)=(黄)等等,我们所见到的蓝色并非纯蓝色,如果只留蓝色其他颜色全部关闭就会什么都不显示。也因此衍生了两外两种颜色描述方法,HSV和HLS

HSV:Hue色相,Saturation饱和度,Value明度

HLS:Hue色相,Saturation饱和度,Lightness亮度

4.2.8.2 hsv 色彩空间过滤 hsv_color_filter

机器人端启动摄像头roslaunch robot_vision robot_camera.launch

机器人端启动HSV颜色过滤器roslaunch robot_vision hsv_color_filter.launch

PC 用两个终端打开两个rqt_image_view工具,分别订阅/image_raw/compressed和/hsv_color_filter/image/compressed

这是刚打开图像工具时显示的画面,可以看到除了蓝色以外还有一些其他颜色也被显示出来了。

此时我们要只显示蓝色的话,根据HSV色彩空间。饱和度越低的越接近白光,明度越低的越暗沉越接近黑光。色相根据红黄绿蓝紫的顺序,越低的越接近红光。那么我们这里想要显示的蓝色是属于淡蓝色只是相对艳丽的也就是明度中等左右,它不接近白光也就是说饱和度极高,色相也是偏高的颜色,那么直接将这三个参数过滤。色相偏高选到240,饱和度极高直接拉满,明度适中。这样只显示蓝色的参数就调好了。

经过调整之后,可以比较稳定的过滤出蓝色。

4.2.8.3 hls色彩空间过滤 hls_color_filter

机器人端启动摄像头roslaunch robot_vision robot_camera.launch

机器人端启动HLS颜色过滤器roslaunch robot_vision hls_color_filter.launch

PC 用两个终端打开两个rqt_image_view工具,分别订阅/image_raw/compressed和/hls_color_filter/image/compressed

HLS色彩空间过滤器的动态调参也是的做法和HSV调参过程类似,这里就不再进行演示。

4.2.9 OpenCV-简单图像处理类

本节内容介绍OpenCV中简单图像处理类的应用

4.2.9.1 OpenCV中图像格式和ROS话题格式相互转换

机器人端启动摄像头roslaunch robot_vision robot_camera.launch

PC 启动rosrun robot_vision cv_bridge_test.py

PC 用两个终端打开两个rqt_image_view工具,分别订阅/image_raw/compressed和/cv_bridge_image

可以看到左边的话题比右边多了一个圆点,它是由cv_bridge_test这个节点订阅了image_raw这个话题,然后将image_raw话题转换成OpenCV数据后在图像上画了一个圆点。然后再转换成ROS的话题发布出来的结果。

PC 使用rqt_graph工具可以看到图像节点和话题之间的关系

4.2.9.1图像叠加:

机器人端启动摄像头roslaunch robot_vision robot_camera.launch

机器人端启动虚拟摄像头roslaunch robot_vision fake_camera.launch

PC 启动图像叠加roslaunch robot_vision adding_images.launch

PC 用两个终端打开两个rqt_image_view工具,分别订阅/image_static和/adding_images/image/compressed

左侧为虚拟相机发布的静态图片,右侧为真实相机图像和静态图片叠加的效果

PC 启动动态调参工具rosrun rqt_reconfigure rqt_reconfigure修改透明度

通过动态调参工具即可改变透明度达到以上图片效果

相关推荐
lijianhua_97124 小时前
国内某顶级大学内部用的ai自动生成论文的提示词
人工智能
EDPJ4 小时前
当图像与文本 “各说各话” —— CLIP 中的模态鸿沟与对象偏向
深度学习·计算机视觉
蔡俊锋4 小时前
用AI实现乐高式大型可插拔系统的技术方案
人工智能·ai工程·ai原子能力·ai乐高工程
自然语4 小时前
人工智能之数字生命 认知架构白皮书 第7章
人工智能·架构
大熊背4 小时前
利用ISP离线模式进行分块LSC校正的方法
人工智能·算法·机器学习
eastyuxiao5 小时前
如何在不同的机器上运行多个OpenClaw实例?
人工智能·git·架构·github·php
诸葛务农5 小时前
AGI 主要技术路径及核心技术:归一融合及未来之路5
大数据·人工智能
光影少年5 小时前
AI Agent智能体开发
人工智能·aigc·ai编程
charlee445 小时前
最小二乘问题详解17:SFM仿真数据生成
c++·计算机视觉·sfm·数字摄影测量·无人机航测
ai生成式引擎优化技术5 小时前
TSPR-WEB-LLM-HIC (TWLH四元结构)AI生成式引擎(GEO)技术白皮书
人工智能