您现在的位置是:首页 >其他 >实验二 ROS结合OpenCV示例——人脸识别网站首页其他

实验二 ROS结合OpenCV示例——人脸识别

Chance Z 2023-06-18 08:00:03
简介实验二 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窗口框出人脸
#发布识别后的图像
人脸识别
#首先匹配正面人脸模型
#如果正面人脸模型匹配失败,尝试侧面人脸匹配

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。