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
即可查看图像