Face Recognition with Kinect
Update: Patrick Goebel has posted a great new package and tutorial for robust face detection. I have posted an answer to this question below (See Pi Robot example of robust face detection with Kinect:) if you find Patrick's work helpful, please vote up the answer to move it to the top of this question. (Scott)
I am moving this thread to the Answers site. It was started on ros-kinect before Answers was released, so trying to be a good ROS citizen. :)
Hi Radu I am able to pretty easily do face detection via the kinect using the built in recognition python package that comes inside the vision_opencv stack. For those on this thread here are the steps... roscd to openni_camera go into the launch directory, edit the openni_kinect.launch file and add the following line to remap the default video output topic from kinect to the topic that the face recognition listens node listens on.
<remap from="/camera/rgb/image_color" to="/image"/>
Run the face recognition node with.. rosrun opencv_tests rosfacedetect.py (located in vision_opencv stack)
If performance lags a bit, use rosrun dynamic_reconfigure reconfigure_gui to adjust settings (I tend to use the QVGA options)
For any newbies reading this, you can use rosrun rviz rviz and add a pointcloud2 option that listens on /camera/depth/points2 topic to see the point cloud.
OK....So where does this get us? I now have the face found and boxes to a region of interest and can visualize it. I can capture and see the point cloud data of the larger scene. What I want to do to feed this into your recognition flow Radu is to then use the detected face ROI to crop the point cloud down to just the points that represent the face.
...and that is where I am stuck... Any tips from anyone on how to use ROI info to crop a point cloud image on the fly would be greatly appreciated.
And for those that are interested in facial recognition, hopefully this helps you get started.
Best Regards, -Scott