ROS使用笔记本自带USB摄像头运行pi_face_tracker,进行人脸识别

来源:互联网 发布:js offsetright 编辑:程序博客网 时间:2024/03/29 15:09

人脸识别在机器人应用当中算是一个热门的应用,在网上找了一些Haar算法的例子,在opencv下面跑都能正常识别,打算在ros中也跑一跑,在网上找了一下,找到了pi_face_tracker这个例子,它是Pi robot里的一个应用,Pi robot是以TurtleBot为基础做的一个带机器手的移动机器人,很适合我这种机器人爱好者(网站http://www.pirobot.org/)。

例子里提示可以安装uvc_cam或者kinect两种视频设备

安装uvc_cam package

$ git clone https://github.com/ericperko/uvc_cam.git$ rosdep install uvc_cam$ rosmake uvc_cam

$ svn co http://pi-robot-ros-pkg.googlecode.com/svn/trunk/pi_vision4 rosdep install pi_vision$ rosmake pi_vision

装完以后运行

$ roslaunch ros2opencv uvc_cam.launch
提示报错,说没有找到设备,我机器上没有安装uvc_cam,只有自带的USB摄像头,所以就只能用自带的摄像头了。重新在网上搜了一下,发现在ros里面驱动USB摄像头需要另外安装usb_cam的包,所以重新装了一下过程如下(http://pharos.ece.utexas.edu/wiki/index.php/How_to_Use_a_Webcam_in_ROS_with_the_usb_cam_Package)。

$ sudo apt-get install ros-electric-bosch-drivers
$ svn co https://bosch-ros-pkg.svn.sourceforge.net/svnroot/bosch-ros-pkg/trunk/stacks/bosch_drivers$ rospack profile$ roscd usb_cam$ rosmake --rosdep-install

安装完成后,测试是否驱动

$ roscore
新开一个窗口,编辑usb_cam-test.launch,内容如下:
<launch>  <node name="usb_cam" pkg="usb_cam" type="usb_cam_node" output="screen" >    <param name="video_device" value="/dev/video0" />    <param name="image_width" value="640" />    <param name="image_height" value="480" />    <param name="pixel_format" value="mjpeg" />    <param name="camera_frame_id" value="usb_cam" />    <param name="io_method" value="mmap"/>  </node>  <node name="image_view" pkg="image_view" type="image_view" respawn="false" output="screen">    <remap from="image" to="/usb_cam/image_raw"/>    <param name="autosize" value="true" />  </node></launch>

保存以后,运行

$ roslaunch usb_cam-test.launch

结果报错,发现是pixel_format的值不对,需要修改为yuyv

再次运行,就可以显示图像了。接下将usb摄像头作为输入到人脸识别人的uvc_cam.launch中,需要做如下修改

1、修改usb_cam-test.launch,删除"image_view" 这个节点。

2、修改face_tracker_uvc_cam.launch文件,修改<remap from="input_rgb_image" to="/camera/image_raw" />这一句为<remap from="input_rgb_image" to="/usb_cam/image_raw" />

3、运行roslaunch uvc_cam-test.launch

4、运行roslaunch pi_face_tracker face_tracker_uvc_cam.launch

好了,你可以看到你摄像头里的头像,你的脸被识别出来了。


第二种方法是用kinect作为输入设备。

这个比较简单,接好kinect 设备后,按步骤就可以完成。

$ roslaunch ros2opencv openni_node.launch

$ roslaunch pi_face_tracker face_tracker_kinect.launch 



原创粉丝点击