OpenCV Langsame Kamera framerate

Ich nur kopiert ein Programm zur Erkennung von Gesichtern durch die webcam, aber die video-capture ist wirklich langsam, und ich weiß nicht, wie es zu lösen ist!

Hier ist der code:

#include<stdio.h>
#include<math.h>
#include<opencv\cv.h>
#include<opencv\highgui.h>
#include<opencv2\objdetect\objdetect.hpp>
#include<opencv2\highgui\highgui.hpp>
#include<opencv2\imgproc\imgproc.hpp>
#include<vector>

using namespace cv;
using namespace std;

int main()
{
CascadeClassifier face_cascade;
if(!face_cascade.load("c:\\haar\\haarcascade_frontalface_alt2.xml")) {
    printf("Error loading cascade file for the face");
    return 1;
}
VideoCapture capture(0);
if(!capture.isOpened())
{
    printf("Error trying to start the Camera");
    return 1;
}
Mat cap_img,gray_img;
vector<Rect> faces;
while(1)
{
    capture >> cap_img;
    waitKey(10);
    cvtColor(cap_img, gray_img, CV_BGR2GRAY);
    cv::equalizeHist(gray_img,gray_img);
    face_cascade.detectMultiScale(gray_img, faces, 1.1, 10, CV_HAAR_SCALE_IMAGE | CV_HAAR_DO_CANNY_PRUNING, cvSize(0,0), cvSize(300,300));
    for(int i=0; i < faces.size();i++)
    {
        Point pt1(faces[i].x+faces[i].width, faces[i].y+faces[i].height);
        Point pt2(faces[i].x,faces[i].y);
        rectangle(cap_img, pt1, pt2, cvScalar(191,191,191), 2, 8, 0);
    }
    imshow("Result", cap_img);
    waitKey(3);
    char c = waitKey(3);
    if(c == 27)
        break;
}
return 0;
}

Ich benutze Visual studio 2012 und das ist die main.cpp Datei. Im mit OpenCV 2.4.9!

  • Hast du das kompilieren im debug-oder im release-Modus? OpenCv ist die Laufzeit erheblich verbessert werden, wenn kompiliert und ausgeführt im release-Modus!
  • Im release-Modus, es ist mir eine exe fehlt Fehler! Es ist das erste mal im arbeiten mit OpenCv..
  • Sieht aus wie die Bibliotheken-Pfade Durcheinander kommen, wenn ich es auf release-Modus, ich weiß nicht, warum! Hier ist ein PrintScreen der einige der Fehler, wenn ich es auf release-Modus... i.imgur.com/9aXf9GA.png
  • Sie müssen setup Ihre Projekt-Eigenschaften die gleiche Weise ein, wie Sie in den debug-Modus. Ansonsten weder Ihre header-Dateien noch die libs gefunden werden kann. WICHTIG: Stellen Sie sicher, dass Sie die Bibliotheken angeben, deren Dateinamen werden nicht mit dem Suffix 'd'. E. g. opencv_imgproc249.lib statt opencv_imgproc249d.lib
  • Ok, danke Mann. Es gibt kein Fehler jetzt aber noch die Exe fehlt Fehler!
  • Es funktioniert jetzt, ich musste nur ändern, ein paar Sachen in den Präprozessor zu akzeptieren fopen! Vielen Dank für alles, Mann, es funktioniert jetzt 🙂
  • Die Framerate ist jetzt viel besser, aber do u wissen, etwas mehr zu erhöhen?
  • Sollten Sie auf jeden Fall loszuwerden, alle diejenigen, die waitKey() Anrufe. Es wartet die angegebene Zeit in Millisekunden. Halten Sie einfach die letzten drei Zeilen deiner while-Schleife und entfernen Sie die andere zwei Anrufe.
  • Wow danke Mann, es ist wirklich schneller geworden! Du bist ein OpenCV professional xd
  • Ich poste eine Zusammenfassung als Antwort dann. Bitte akzeptieren Sie durch anklicken der grünen Häkchen, um diese Antwort zu markieren, dass es dein problem gelöst hat.
  • Ja, Mann, natürlich 🙂

InformationsquelleAutor Kyuubi96 | 2014-07-23
Schreibe einen Kommentar