新手问题,是的,我花了很多时间筛选类似的问题和答案,但没有运气。
我想要做的是按顺序保存视频文件中的帧。我已经设法使用 c 保存了一张图像,之后我似乎无法保存图像。我已经开始在 opencv 中使用 c++ 而不是 c,我所能做的就是查看视频而不是从中保存任何 jpg。
如果有帮助,我在 mac 上使用 opencv2.4.4a。下面是我的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);
}
先感谢您
对以上内容进行编辑。
我已经添加到上面的代码中,这会导致图像与 test.jpg 一起保存,然后用下一帧重写。我如何告诉opencv不要复制最后一张图像并将下一帧重命名为test_2.jpg,例如test_1.jpg、test_2.jpg等等?
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);
}