people_detector.h
Go to the documentation of this file.
00001 
00002 
00003 
00004 
00005 
00006 #ifndef __PEOPLEDETECTOR_H__
00007 #define __PEOPLEDETECTOR_H__
00008 
00009 #ifdef __LINUX__
00010         //#include "cob_vision_ipa_utils/MathUtils.h"
00011         //#include "cob_sensor_fusion/ColoredPointCloud.h"
00012 #else
00013         #include "cob_vision/cob_vision_ipa_utils/common/include/cob_vision_ipa_utils/MathUtils.h"
00014         #include "cob_vision/cob_sensor_fusion/common/include/cob_sensor_fusion/ColoredPointCloud.h"    // todo: necessary?
00015 #endif
00016 #include <fstream>
00017 #include <set>
00018 #include <opencv2/opencv.hpp>
00019 
00020 namespace ipa_PeopleDetector {
00021 
00024 class PeopleDetector
00025 {
00026 public:
00027 
00029         PeopleDetector(void); 
00030         ~PeopleDetector(void); 
00031 
00036         virtual unsigned long Init(std::string directory);
00037 
00043         virtual unsigned long DetectColorFaces(cv::Mat& img, std::vector<cv::Rect>& faceCoordinates);
00044 
00051         virtual unsigned long DetectRangeFace(cv::Mat& img, std::vector<cv::Rect>& rangeFaceCoordinates, bool fillUnassignedDepthValues=false);
00052 
00062         virtual unsigned long DetectFaces(cv::Mat& img, cv::Mat& rangeImg, std::vector<cv::Rect>& colorFaceCoordinates, std::vector<cv::Rect>& rangeFaceCoordinates, std::set<size_t>& colorToRangeFaceDependency, bool fillUnassignedDepthValues=false);
00063 
00072         virtual unsigned long AddFace(cv::Mat& img, cv::Rect& face, std::string id, std::vector<cv::Mat>& images, std::vector<std::string>& ids);
00073 
00080         virtual unsigned long ConvertAndResize(cv::Mat& img, cv::Mat& resized, cv::Rect& face);
00081 
00085         virtual cv::Mat preprocessImage(cv::Mat& input_image);
00086 
00095         virtual unsigned long PCA(int* nEigens, std::vector<cv::Mat>& eigenVectors, cv::Mat& eigenValMat, cv::Mat& avgImage, std::vector<cv::Mat>& images, cv::Mat& projectedTrainFaceMat);
00096 
00111 #if CV_MAJOR_VERSION == 2
00112         virtual unsigned long RecognizeFace(cv::Mat& colorImage, std::vector<cv::Rect>& colorFaces, int* nEigens, std::vector<cv::Mat>& eigenVectArr, cv::Mat& avgImage, cv::Mat& projectedTrainFaceMat,
00113                                                                                                                                                         std::vector<int>& index, int *threshold, int *threshold_FS, cv::Mat& eigenValMat, cv::SVM* personClassifier = 0);
00114 #else
00115 // OpenCV 3
00116         virtual unsigned long RecognizeFace(cv::Mat& colorImage, std::vector<cv::Rect>& colorFaces, int* nEigens, std::vector<cv::Mat>& eigenVectArr, cv::Mat& avgImage, cv::Mat& projectedTrainFaceMat,
00117                                                                                                                                                         std::vector<int>& index, int *threshold, int *threshold_FS, cv::Mat& eigenValMat, cv::ml::SVM* personClassifier = 0);
00118 #endif
00119 
00130 #if CV_MAJOR_VERSION == 2
00131         virtual unsigned long ClassifyFace(float *projectedTestFace, int *nearest, int *nEigens, cv::Mat& projectedTrainFaceMat, int *threshold, cv::Mat& eigenValMat, cv::SVM* personClassifier = 0);
00132 #else
00133 // OpenCV 3
00134         virtual unsigned long ClassifyFace(float *projectedTestFace, int *nearest, int *nEigens, cv::Mat& projectedTrainFaceMat, int *threshold, cv::Mat& eigenValMat, cv::ml::SVM* personClassifier = 0);
00135 #endif
00136 
00146 #if CV_MAJOR_VERSION == 2
00147         virtual unsigned long CalculateFaceClasses(cv::Mat& projectedTrainFaceMat, std::vector<std::string>& id, int *nEigens, cv::Mat& faceClassAvgProjections, std::vector<std::string>& idUnique, cv::SVM* personClassifier = 0);
00148 #else
00149 // OpenCV 3
00150         virtual unsigned long CalculateFaceClasses(cv::Mat& projectedTrainFaceMat, std::vector<std::string>& id, int *nEigens, cv::Mat& faceClassAvgProjections, std::vector<std::string>& idUnique, cv::ml::SVM* personClassifier = 0);
00151 #endif
00152 
00153         double m_faces_increase_search_scale;           
00154         int m_faces_drop_groups;                                        
00155         int m_faces_min_search_scale_x;                         
00156         int m_faces_min_search_scale_y;                         
00157 
00158         double m_range_increase_search_scale;           
00159         int m_range_drop_groups;                                        
00160         int m_range_min_search_scale_x;                         
00161         int m_range_min_search_scale_y;                         
00162 
00163 private:
00167         unsigned long InterpolateUnassignedPixels(cv::Mat& img);
00168 
00169         CvMemStorage* m_storage;                                        
00170         CvHaarClassifierCascade* m_face_cascade;        
00171         CvHaarClassifierCascade* m_range_cascade;       
00172 };
00173 
00174 } // end namespace
00175 
00176 #endif // __PEOPLEDETECTOR_H__


cob_people_detection
Author(s): Richard Bormann , Thomas Zwölfer
autogenerated on Mon May 6 2019 02:32:06