2017-04-04 5 views
0

hallo Ich mache eine App, das Gesicht Sehenswürdigkeiten (68 Punkt)über DLIB :: frontal_face_detector Optimierung

Ich bin in Schwierigkeiten optimierendes System erkennt. Ich verwende die HOG-Methode, um Gesichter zu erkennen.

In, Detektor (cv_grayscale, Gesichtserkennung, -0,2); Typ "dlib :: frontal_face_detector & Detektor"

Da sind so viele Berechnungen drin. Also, Android-CPU kann sie nicht abdecken.

Also, jemand, der dieses Problem oder relevante Probleme gelöst hat?

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); 
     .... 
} 

Antwort

0

Herunterladen neueste opencv android sdk aus here. es enthält eine Menge ausgetestet Probe. Einer von ihnen Gesichtserkennung und es erkennt Gesichter mit 22 Bilder pro Sekunde Geschwindigkeit auf meinem Xperia-Z5 Phone. Schließlich, wenn opencv Fehler Drehung der Kamera this Code verwenden. Der Code ist sehr Clear und findet die beste Bildauflösung für Ihre Kameraansicht. Wenn Sie auch Gesichtserkennung möchten, können Sie C++ - Module herunterladen, aber dieses Mal müssen Sie NDK (C++) verwenden. Weil Android SDK nicht face.h oder andere Module haben. Sie können das Erkennungsgesicht von Java kombinieren und sie aus C++ erkennen. Machen Sie sich keine Gedanken über die Geschwindigkeit. Opencv optimiert das. Das Erkennen von lpcascade classificer xmls im Gesicht funktioniert sehr gut. Aber wenn Sie mehr erkennen wollen, verwenden Sie Haarkaskade.