3 ROS+OpenCV
3.1 OpenCV简介
Open Source Computer Vision Library;基于BSD许可发行的跨平台开源计算机视觉库(Linux、Windows和Mac OS等);由一系列C函数和少量C++类构成,同时提供C++、Python、Ruby、MATLAB等语言的接口;实现了图像处理和计算机视觉方面的很多通用算法,而且对非商业应用和商业应用都是免费的;可以直接访问硬件摄像头,并且还提供了一个简单的GUl系统一highgui。
3.2 OpenCV使用
安装OpenCV
$ sudo apt-get install ros-kinetic-vision-opencv libopencv-dev python-opencv
测试例程
$ roslaunch robot_vision usb_cam.launch # 启动摄像头 $ rosrun robot_vision cv_bridge_test.py # 打开opencv图像,自己的api接口 $ rqt_image_view # ROS中的图像
imgmsg_to_cv2():将ROS图像消息转换成OpenCV图像数据
cv2_to_imgmsg():将OpenCV格式的图像数据转换成ROS图像消息
输入参数:
1.图像消息流
2.转换的图像数据格式
3.3 人脸识别
启动人脸识别实例
$ roslaunch robot_vision usb_cam.launch # 启动摄像头 $ roslaunch robot_vision face_detector.launch # 启动人脸识别功能节点 $ rqt_image_view
初始化部分:完成ROS节点、图像、识别参数的设置。
ROS图像回调函数:将图像转化成OpenCV的数据格式,然后预处理之后开始调用人脸识别的功能函数,最后把识别的结果发布。
人脸识别:调用OpenCV提供的人脸识别接口,与数据库中的人脸特征进行匹配。
3.4 物体跟踪
启动物体跟踪实例
$ roslaunch robot_vision usb_cam.launch # 启动摄像头 $ roslaunch robot_vision motion_detector.launch # 启动物体跟踪功能节点 $ rqt_image_view
初始化部分:完成ROS节点、图像、识别参数的设置
图像处理:将图像转换成OpenCV格式;完成图像预处理之后开始针对两帧图像进行比较,基于图像差异识别到运动的物体,最后标识识别结果并发布
4 二维码识别
4.1 二维码使用
安装二维码识别功能包
$ sudo apt-get install ros-kinect-ar-track-alvar
创建二维码
$ rosrun ar_track_alvar createMarker $ rosrun ar_track_alvar createMarker 0 $ roscd robot_vision/config $ rosrun ar_track_alvar createMarker -s 5 0 #边长5厘米,数字为0的二维码 $ rosrun ar_track_alvar createMarker -s 5 1 $ rosrun ar_track_alvar createMarker -s 5 2
4.2 摄像头二维码识别
1.启动摄像头二维码识别示例
$ roslaunch robot_vision usb_cam_with_calibration.launch $ roslaunch robot_vision ar_track_camera.launch
启动摄像头时,需要加载标定文件,否则可能无法识别二维码。
2.查看识别到的二维码位姿
$ rostopic echo /ar_pose_marker
4.3 Kinect二维码识别
启动Kinect二维码识别示例
$ roslaunch robot_vision freenect.launch $ roslaunch robot_vision ar_track_kinect.launch
5 扩展内容:物体识别与机器学习
Object Recognition Kitchen(ORK) 物体识别框架
TensorFlow Object Detection API 识别API