OpenCV Video-capture-und-fps-problem
Ich bin Videoübertragung von meiner webcam mit OpenCV auf MacOSX. Es funktioniert gut, aber wenn ich versuche zu spielen auf QuickTime-mein aufgenommenes video spielt er zu schnell. also ich capture von der Kamera für 10 Sekunden, aber wenn ich spielen auf QuickTime-video ist 2 Sekunden.
Ich habe versucht, zu ändern, fps von 25 auf 10 und Es funktioniert ganz gut, aber ich bin sicher, es ist nicht der korrekte Prozess:
CvVideoWriter *writer = 0;
int isColor = 1;
int fps = 25;
int frameW = 640; //744 for firewire cameras
int frameH = 480; //480 for firewire cameras
Das problem ist, dass ich jetzt habe, zu erfassen, mit WebCam, aber die wirkliche pourpose des Programms zu erfassen Bilder von einer externen Quelle, die an meinem Mac.
Bin ich mit diesem code, zu erfassen:
for (;;) {
cvGrabFrame(capture)
image = cvRetrieveFrame(capture);
cvWriteFrame( writer, image );
}
Irgendeinen Hinweis? Ich bin mir auch zeigen, webcam, Ausgang auf cvNamedWindow, wie kann ich die Qualität verbessern in diesem windows?
vielen Dank an alle!
Andrea!
InformationsquelleAutor Andrea Girardi | 2009-07-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnte sein, dass die Komprimierung der aufgenommenen video-und speichern es in einer Datei ist sehr CPU-intensiv. Wenn das der Fall ist, dann Sie wirklich nur 10 FPS in der cvNamedWindow, und nur 10 FPS in die Datei geschrieben. Angabe 25 FPS in der Datei wird natürlich die Geschwindigkeit der Wiedergabe einige.
Um zu sehen, ob das wirklich dein problem ist, könnten Sie versuchen, das Bild zu speichern Daten nur im Arbeitsspeicher. Ich habe es nicht ausprobiert, aber ich denke, Sie tun würde, mit cvCloneImage().
Könnten Sie auch versuchen, einige andere format mit einer geringeren CPU-overhead um Ihr video zu speichern:
InformationsquelleAutor Inshallah
Verwenden
cvCreateVideoWriter(filename, fourcc, fps, frame size, is color)
mitfps = 10
,fps = 20
und unterschiedliche Werte. Wenn Sie bereits wissen, der fps-Wert des frames kommen von der Kamera verwenden.Problem ist, dass Sie immer weniger Bilder pro Sekunde von der Kamera und Sie schreiben, mehrere Bilder zu video-Datei
Grüße,
Saleh.
InformationsquelleAutor Saleh
Wurde ich mit einer ähnlichen Leistung, wie Sie erwähnt (über 10fps) und fand, dass die aufeinanderfolgenden
retrieveFrame()
Anrufe wurden Ewigkeiten. Ich fand, dassgetCaptureProperty(CV_CAP_PROP_FPS)
war bei einem Standardwert von 0. Änderte ich diesen Wert auf 25 mitsetCaptureProperty(CV_CAP_PROP_FPS,25.0)
und war in der Lage zu erfassen, viel schneller.InformationsquelleAutor Ian
Bestätige ich, dass die 10 fps ist standard, obwohl ich glaube, es kann sein, weil Sie don ' T haben eine Kamera, die fängt bei mehr als 10 fps (das ist wahrscheinlich das Problem).
Dies ist trotzdem seltsam, denn ich bin mit
waitkey(30)
, die33fps
, aber es ist genau 10.InformationsquelleAutor Sam