00001 00061 #ifndef __HEAD_DETECTOR_H__ 00062 #define __HEAD_DETECTOR_H__ 00063 00064 #ifdef __LINUX__ 00065 #else 00066 #include "cob_vision/cob_vision_ipa_utils/common/include/cob_vision_ipa_utils/MathUtils.h" 00067 #include "cob_vision/cob_sensor_fusion/common/include/cob_sensor_fusion/ColoredPointCloud.h" // todo: necessary? 00068 #endif 00069 #include <opencv/ml.h> 00070 #include <opencv/cv.h> 00071 00072 namespace ipa_PeopleDetector 00073 { 00074 00075 class HeadDetector 00076 { 00077 public: 00078 00080 HeadDetector(void); 00081 ~HeadDetector(void); 00082 00090 virtual unsigned long init(std::string model_directory, double depth_increase_search_scale, int depth_drop_groups, int depth_min_search_scale_x, int depth_min_search_scale_y); 00091 00098 virtual unsigned long detectRangeFace(cv::Mat& depth_image, std::vector<cv::Rect>& rangeFaceCoordinates, bool fillUnassignedDepthValues = false); 00099 00100 protected: 00104 unsigned long interpolateUnassignedPixels(cv::Mat& img); 00105 00106 double m_depth_increase_search_scale; 00107 int m_depth_drop_groups; 00108 int m_depth_min_search_scale_x; 00109 int m_depth_min_search_scale_y; 00110 00111 CvMemStorage* m_storage; 00112 CvHaarClassifierCascade* m_range_cascade; 00113 00114 bool m_initialized; 00115 }; 00116 00117 } // end namespace 00118 00119 #endif // __HEAD_DETECTOR_H__