初心者の質問です。はい、同様の質問と回答をふるいにかけるのに多くの時間を費やしましたが、うまくいきませんでした。
私がやろうとしているのは、ビデオ ファイルからフレームを順番に保存することです。cを使用して1つの画像を保存できましたが、その後画像を保存できないようです。cの代わりにopencvで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);
}