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

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

相关推荐
云雾J视界8 分钟前
敏捷实践组合破解芯片低功耗困局:迭代开发中如何精准控制功耗指标
人工智能·低功耗·敏捷实践·tdd·持续集成·软硬件协同·iot芯片
围炉聊科技10 分钟前
手机端侧智能助手:从被动工具到主动助手的进化之路
人工智能·智能手机
亚马逊云开发者11 分钟前
深度探索:EKS MCP Server 与 Amazon Q Developer CLI 集成实践
人工智能
一水鉴天19 分钟前
整体设计 定稿 之19 拼语言表述体系之2(codebuddy)
大数据·前端·人工智能·架构
weixin_4573402126 分钟前
旋转OBB数据集标注查看器
图像处理·人工智能·python·yolo·目标检测·数据集·旋转
玖日大大28 分钟前
NLP—— 让机器读懂人类语言的艺术与科学
人工智能·自然语言处理
这张生成的图像能检测吗33 分钟前
(论文速读)BV-DL:融合双目视觉和深度学习的高速列车轮轨动态位移检测
人工智能·深度学习·计算机视觉·关键点检测·双目视觉·激光传感器
lxmyzzs38 分钟前
在 RK3588 开发板上部署 DeepSeek-R1-Distill-Qwen-1.5B 模型:RKLLM API 实战指南
人工智能·rk3588·deepseek
老欧学视觉41 分钟前
0011机器学习特征工程
人工智能·机器学习
科技观察43 分钟前
国产MATLAB替代软件的关键能力与生态发展现状
大数据·人工智能·matlab