自学内容网 自学内容网

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

PCroslaunch 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修改透明度

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


原文地址:https://blog.csdn.net/weixin_55877886/article/details/137808615

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!