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 <opencv2/opencv.hpp> 00070 00071 namespace ipa_PeopleDetector 00072 { 00073 00074 class HeadDetector 00075 { 00076 public: 00077 00079 HeadDetector(void); 00080 ~HeadDetector(void); 00081 00089 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); 00090 00097 virtual unsigned long detectRangeFace(cv::Mat& depth_image, std::vector<cv::Rect>& rangeFaceCoordinates, bool fillUnassignedDepthValues = false); 00098 00099 protected: 00103 unsigned long interpolateUnassignedPixels(cv::Mat& img); 00104 00105 double m_depth_increase_search_scale; 00106 int m_depth_drop_groups; 00107 int m_depth_min_search_scale_x; 00108 int m_depth_min_search_scale_y; 00109 00110 CvMemStorage* m_storage; 00111 CvHaarClassifierCascade* m_range_cascade; 00112 00113 bool m_initialized; 00114 }; 00115 00116 } // end namespace 00117 00118 #endif // __HEAD_DETECTOR_H__