00001 00061 #ifndef __FACE_RECOGNIZER_NODE_H__ 00062 #define __FACE_RECOGNIZER_NODE_H__ 00063 00064 #ifdef __LINUX__ 00065 #include "cob_people_detection/face_recognizer.h" 00066 #else 00067 #endif 00068 00069 // ROS includes 00070 #include <ros/ros.h> 00071 #include <ros/package.h> // use as: directory_ = ros::package::getPath("cob_people_detection") + "/common/files/windows/"; 00072 // ROS message includes 00073 #include <sensor_msgs/Image.h> 00074 #include <geometry_msgs/Point.h> 00075 #include <cob_perception_msgs/DetectionArray.h> 00076 #include <cob_perception_msgs/ColorDepthImageArray.h> 00077 00078 // Actions 00079 #include <actionlib/server/simple_action_server.h> 00080 #include <cob_people_detection/loadModelAction.h> 00081 00082 //boost includes 00083 00084 #include<boost/filesystem.hpp> 00085 00086 namespace ipa_PeopleDetector 00087 { 00088 00089 typedef actionlib::SimpleActionServer<cob_people_detection::loadModelAction> LoadModelServer; 00090 00091 class FaceRecognizerNode 00092 { 00093 public: 00094 00097 FaceRecognizerNode(ros::NodeHandle nh); 00098 ~FaceRecognizerNode(void); 00099 00100 00101 protected: 00102 00104 void facePositionsCallback(const cob_perception_msgs::ColorDepthImageArray::ConstPtr& face_positions); 00105 //void facePositionsCallback(const cob_perception_msgs::ColorDepthImageCropArray::ConstPtr& face_positions); 00106 00114 bool determine3DFaceCoordinates(cv::Mat& depth_image, int center2Dx, int center2Dy, geometry_msgs::Point& center3D, int search_radius); 00115 00117 void loadModelServerCallback(const cob_people_detection::loadModelGoalConstPtr& goal); 00118 00119 ros::NodeHandle node_handle_; 00120 00121 ros::Subscriber face_position_subscriber_; 00122 00123 ros::Publisher face_recognition_publisher_; 00124 00125 LoadModelServer* load_model_server_; 00126 00127 FaceRecognizer face_recognizer_; 00128 00129 00130 // parameters 00131 std::string data_directory_; 00132 std::string classifier_directory_; 00133 bool enable_face_recognition_; 00134 bool display_timing_; 00135 00136 }; 00137 00138 } // end namespace 00139 00140 #endif // __FACE_RECOGNIZER_NODE_H__