Speichern einer Bildsequenz aus einem Video mit opencv2

Newbie-Frage und ja, ich habe viel Zeit damit verbracht, ähnliche Fragen und Antworten zu sichten, ohne Erfolg.

Ich versuche, Frames aus einer Videodatei in einer sequenziellen Reihenfolge zu speichern. Ich habe es geschafft, ein Bild mit c zu speichern, und ich kann danach scheinbar keine Bilder mehr speichern. Ich habe begonnen, c ++ in opencv anstelle von c zu verwenden, und alles, was ich tun kann, ist, das Video anzusehen und keine JPGs davon zu speichern.

Ich benutze opencv2.4.4a auf dem Mac, wenn das hilft. Unten ist mein Beispiel

#include <stdio.h>
#include <stdlib.h>
#include <opencv/cv.h>
#include <opencv/highgui.h>
#include <iostream>

using namespace cv;
using namespace std;

int main (int argc, char** argv)
{
//initializing capture from file
CvCapture * capture = cvCaptureFromAVI ("/example/example.mov");

//Capturing a frame
IplImage* img = 0;
if(!cvGrabFrame(capture))      //capture a frame
{
printf)Could not grab a fram\n\7");
exit(0);
}
img=cvRerieveFrame(capture);    //retrieve the captured frame

//writing an image to a file
if (!cvSaveImage("/frames/test.jpg", img))
printf("Could not save: %s\n","test.jpg");

//free resources
cvReleaseCapture(&capture);

}

Danke im Voraus

Bearbeiten Sie die oben genannten.

Ich habe den obigen Code hinzugefügt, der dazu führt, dass ein Bild mit der Datei test.jpg gespeichert und beim nächsten Frame neu geschrieben wird. Wie kann ich opencv anweisen, das letzte Bild nicht zu kopieren und das nächste Bild in test_2.jpg umzubenennen, z. B. test_1.jpg, test_2.jpg usw.?

double num_frames = cvGetCaptureProperty (capture, CV_CAP_PROP_FRAME_COUNT);

for (int i = 0; i < (int)num_frames; i++)
{
img = cvQueryFrame(capture);
cvSaveImage("frames/test.jpg", img);
}

cvReleaseCapture(&capture);
}

Antworten auf die Frage(3)

Ihre Antwort auf die Frage