Ich arbeite an einem Android-Projekt, bei dem ich OpenCV verwende, um Gesichter über die Kamera zu erkennen. Die Anwendung erkennt Gesichter korrekt, aber die Leistung ist sehr langsam. Ich habe mehrere Male nach diesem Problem gesucht, aber ich habe keine Lösung gefunden. Gibt es eine Möglichkeit, die Leistung zu verbessern?Wie verbessert man die Gesichtserkennung mit OpenCV auf Android?
Mein Code ist:
QVideoFrame FilterRunnable::run(QVideoFrame *input,
const QVideoSurfaceFormat &surfaceFormat,
QVideoFilterRunnable::RunFlags flags)
{
input->map(QAbstractVideoBuffer::ReadOnly);
QImage image = imageWrapper(*input);
image = image.scaled(640,480);
cv::Mat mat(image.width(),image.height(),CV_8UC3,image.bits(), image.bytesPerLine());
vector<Rect> detectedFaces;
detectedFaces.clear();
frontalFaceClassifier.detectMultiScale(mat, detectedFaces,
1.6, 3, 2 | CV_HAAR_SCALE_IMAGE , Size(60,60));
qDebug()<<"Cantidad de caras en el vector : " << detectedFaces.size();
if(detectedFaces.size() > 0){
actualFace = detectedFaces.at(0);
countDetectedFaces++;
qDebug()<<"**********qwerty**********"<<detectedFaces.size();
}
for(int i=0;i<detectedFaces.size();i++)
{
Rect dibujarCuadrado = detectedFaces.at(i);
cv::rectangle (mat, dibujarCuadrado, 20, 1, LINE_8, 0);
}
}
Was ist, wenn Sie das schwere Heben vom Handy wegbewegten, und tun Sie diesen Teil in der Wolke. – Wayne
Vielen Dank für die schnelle Antwort. Ich denke, es wäre eine sehr gute Idee, obwohl es sehr davon abhängen würde, ein gutes Internet zu haben, denke ich. Haben Sie ein Projekt, in dem es einige Verarbeitungsteile in die Cloud eliminiert, um mich zu leiten? Wenn es so wäre, wäre es eine große Hilfe, vielen Dank. –
@Wayne Denken Sie daran, dass das Übertragen eines Megabytes pro Bild auf den Server bedeuten würde. Ich bin in einer Stadt und meine LTE Upstream ist kaum 2 Mbps (Und ich wette, es gibt viele Menschen viel schlechter dran) –