2017-04-04 84 views
0

嗨,我是製作的應用程序,其檢測面的標記(68點)關於DLIB :: frontal_face_detector優化

我麻煩優化系統來的。我正在使用HOG方法來檢測臉部。

In,detector(cv_grayscale,face_detections,-0.2);類型「dlib :: frontal_face_detector &檢測器」

那裏有太多的計算。所以,android cpu不能覆蓋它們。

那麼,誰解決了這個問題或相關問題?從here.

bool DetectFacesHOG(vector<cv::Rect_<double> >& o_regions, const cv::Mat_<uchar>& intensity, dlib::frontal_face_detector& detector, std::vector<double>& o_confidences) 
{ 

     double scaling = 1.3; 
     cv::Mat_<uchar> upsampled_intensity; 
     cv::resize(intensity, upsampled_intensity, cv::Size((int)(intensity.cols*scaling), (int)(intensity.rows*scaling))); 

     dlib::cv_image<uchar> cv_grayscale(upsampled_intensity); 
     std::vector<dlib::full_detection> face_detections; 

     // millions of computation !!!!!!!!!!!!!!!!!!!!!!!! 
     detector(cv_grayscale, face_detections, -0.2); 
     .... 
} 

回答

0

下載最新的OpenCV的Android SDK中它包含了很多調試樣品。其中一個人面臨檢測,它會在我的Xperia-Z5手機上以每秒22幀的速度檢測出的速度。最後如果opencv錯誤旋轉的攝像頭使用this代碼。代碼非常清晰,可爲您的相機視圖找到最佳的幀分辨率。 İf你也想要臉部識別ü可以下載C++模塊,但這次你必須使用NDK(C++)。因爲Android sdk沒有face.h或其他模塊。你可以結合來自java的檢測面並從C++中識別它們。不要擔心速度opencv優化that.Face檢測lpcascade分類器xmls工作高性能。但是如果你想要更多的檢測使用hacarcascade。