您现在的位置是:首页 >其他 >实验二 ROS结合OpenCV示例——人脸识别网站首页其他
实验二 ROS结合OpenCV示例——人脸识别
ROS结合OpenCV示例——人脸识别
一、实验原理:
Opencv库是一个基于BSD许可发行的跨平台开源计算机视觉库,基于opencv库,可以很方便的入手机器视觉方面的应用,ros已经集成了opencv库和相关接口功能包;
人脸识别的目的是在输入图像中确定人脸的位置、大小、姿态。利用大量样本的Haar特征进行分类器训练,然后调用训练好的瀑布型级联分类器cascade进行模式匹配。进而获取二维包围框。
二、实验步骤:
<1> 安装opencv 以及串口功能包
$ sudo apt-get install ros-kinetic-vision-opencv libopencv-dev python-opencv
接口功能包的作用就是将ROS中的图像数据转换成opencv格式的图像,并且调用opencv库进行各种图像处理。
<2> 测试opencv串口是否安装成功
(使用usb摄像头示例,作业:使用orbbec实现同样功能)
打开USB摄像头:
$ roslaunch robot_vision usb_cam.launch (usb摄像头)
启动rqt
$ rosrun rqt_image_view rqt_image_view
此时选择image_raw
然后使用test查看效果:
$ rosrun robot_vision cv_bridge_test.py
使用usb摄像头时候test.py中的数据:
如果用orbbec时候需要改动此处为:/amera/rgb/image_raw
该命令启动另一个视频窗口,如下所示:
此窗口显示一个红色圆点,是通过opencv转化之后,画上去的小红点。
<3> 调用usb摄像头驱动
$ roslaunch robot_vision usb_cam.launch (usb摄像头)
$ roslaunch astra_launch astra.launch (orbbec摄像头)
<4> 启动人脸功能
$ roslaunch robot_vision face_detector.launch
<5> 启动rqt显示功能
$ rosrun rqt_image_view rqt_image_view
三、程序分析:
face_detector.launch文件里面主要程序是face_detector.py源程序,程序主要内容如下所示
初始化
#创建cv_bridge
#获取haar特征的级联表xml文件,文件路径在launch文件中传入
#使用级联表初始化haar特征检测器
#设置级联表参数,优化人脸识别,
#初始化订阅rgb格式图像数据订阅者
ROS 回调函数
#将ROS中的图像数据转换成opencv格式的图像
#创建灰度图像
#创建平衡直方图
#尝试检测人脸
#在opencv窗口框出人脸
#发布识别后的图像
人脸识别
#首先匹配正面人脸模型
#如果正面人脸模型匹配失败,尝试侧面人脸匹配