电子工坊

ROS 视觉 2 | OpenCV图像处理

注意!该教程对应ROS套件用户。

OpenCV介绍

OpenCV是一个开放源代码的计算机视觉库,是提高计算效率的有用工具。该库在全球拥有超过4.7万用户,并广泛用于高级机器人领域。OpenCV的一个关键点是它可以灵活地与ROS对接使用,从而很轻松就可以创建计算机视觉应用程序。

opencv_apps提供了各种在内部运行OpenCV功能并将其结果发布为ROS主题的节点。使用opencv_apps只需运行与所需的OpenCV功能相对应的启动文件,就可以跳过为许多功能编写OpenCV应用程序代码的步骤。

图像处理示例文件结构

图像处理示示例在~/lingao_ws/src/lingaoRobot/lingao_visual/lingao_opencv文件目录下。
这些是官方提供的示例,如边缘检测、结构分析、运动分析、对象分割、图像过滤、人\脸检测等节点。

节点 文件名 功能
边缘检测 lingao_edge_detection.launch Edge detection – 边缘检测
边缘检测 lingao_hough_lines hough_lines
边缘检测 lingao_hough_circles hough_circles
结构分析 lingao_find_contours.launch Find Contours – 寻找轮廓
结构分析 lingao_general_contours.launch General contours – 为轮廓创建边界旋转框和椭圆
结构分析 lingao_convex_hull.launch Convex hull – 寻找凸包
结构分析 contour_moments
运动分析 lingao_goodfeature_track.launch Good Features to track – 特征点检测
运动分析 lingao_camshift.launch CamShift – 跟踪算法
运动分析 lingao_fback_flow.launch Fback flow – 密集光流
运动分析 lingao_lk_flow.launch Lucas Kanade – 稀疏光流跟踪
运动分析 lingao_phase_corr.launch Phase Correlate – 相位相关法
运动分析 lingao_simple_flow simple_flow
对象分割 lingao_segment_objects.launch Segment objects 基于高斯混合的背景/前景分割
对象分割 watershed_segmentation
图像过滤器 lingao_rgb_color_filter.launch RGB color filter – RGB颜色过滤
图像过滤器 lingao_hls_color_filter.launch HLS color filter – HSL颜色过滤
图像过滤器 lingao_hsv_color_filter.launch HSV color filter – HSV颜色过滤

OpenCV图像示例使用方法

在主控节启动深度摄像头节点

在主控节启动一个新的终端启动摄像头节点

roslaunch lingao_depth lingao_depthcamera_bringup.launch 

启动OpenCV例程

在主控节启动一个新的终端启动Edge detection – 边缘检测算法

roslaunch lingao_opencv lingao_edge_detection.launch


NOTE: 如需要使用其他算法可在 图像处理示例文件结构 的文件名选择启动文件,通过roslaunch lingao_opencv + 文件名启动。
例如Find Contours – 寻找轮廓roslaunch lingao_opencv lingao_find_contours.launch

使用rqt_image_view查看图像

图像可通过订阅方式查看,下面使用rqt_image_view的GUI插件查看图像。
在本地节点启动一个新的终端运行启动rqt_image_view命令

 rosrun rqt_image_view rqt_image_view 

选择/edge_detection/image或者/edge_detection/image/compressed即可查看图像