Guardar una secuencia de imágenes del video usando opencv2

Pregunta para principiantes y sí, he pasado mucho tiempo examinando preguntas y respuestas similares sin suerte.

Lo que estoy tratando de hacer es guardar los cuadros de un archivo de video en orden secuencial. He logrado guardar una imagen usando c y parece que no puedo guardar imágenes después de eso. Comencé a usar c ++ en opencv en lugar de c y todo lo que puedo hacer es ver el video y no guardar ningún jpg.

Estoy usando opencv2.4.4a en mac si eso ayuda. abajo está mi ejemplo c

#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);

}

Gracias de antemano

Editar a lo anterior.

He agregado al código anterior lo que da como resultado que se guarde una imagen con el test.jpg y luego se reescribe con el siguiente fotograma. ¿Cómo le digo a opencv que no copie la última imagen y cambie el nombre del siguiente fotograma a test_2.jpg por ejemplo, test_1.jpg, test_2.jpg y así sucesivamente?

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

Respuestas a la pregunta(3)

Su respuesta a la pregunta