MacOSXのOpenCV 2.4.13.2でC APIを使用してビデオを作成できないC++ APIが現在OpenCVに好まれるようになって以来、古くなっているチュートリアルの紹介がありました。私はチュートリアルで2日間過ごしました。特にここで例を再現しようとしていますhttp://www.cs.iit.edu/~agam/cs512/lect-notes/opencv-intro/opencv-intro.html#SECTION00073000000000000000MacOSXのOpenCV 2.4.13.2でC APIを使用してビデオを開くことができない
私はカメラを起動して "out.avi"というファイルに録音と書き込みを開始できますVLCまたはQuicktimeで開くことができません。
これは私の全体のプログラムです:
#include <stdio.h>
#include <cv.h>
#include "highgui.h"
#include "cxcore.h"
int main(int argc, char **argv) {
int key = 0;
int i = 0;
CvCapture *capture = 0; //The camera
IplImage* frame = 0; //The images you bring out of the camera
capture = cvCaptureFromCAM(0); //Open the camera
if (!capture){
printf("Could not connect to camera\n"); return 1;
}
cvQueryFrame(capture);
double fps = cvGetCaptureProperty(capture, CV_CAP_PROP_FPS);
int frame_height = cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_HEIGHT);
int frame_width = cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_WIDTH);
cvNamedWindow("win", CV_WINDOW_AUTOSIZE);
cvMoveWindow("win", 100, 100);
CvVideoWriter *writer = cvCreateVideoWriter("out.avi", CV_FOURCC('D', 'I', 'V', 'X'), fps, cvSize(frame_width, frame_height), 1);
if (!writer) {
printf("CvVideoWriter failed\n");
exit(1);
}
IplImage *img = 0;
int nframes = 1000;
for (i = 0; i < nframes; i++) {
if (!cvGrabFrame(capture)) {
printf("Unable to grab frame!\n");
exit(0);
}
img = cvRetrieveFrame(capture, 0);
cvWriteFrame(writer, img);
cvShowImage("win", img);
key = cvWaitKey(20);
}
return 0;
}
私が間違っているのか?前もって感謝します。
あなたは解放する必要はありませんか?私。 @videoWriter(&writer); ' –
@AlexanderReynoldsはいVideoWriterを解放してウィンドウを破壊する必要がありますが、小さなプログラムでは、ビデオが完成した後にリリースされるので問題ありません。問題は、 "out.avi"を書き込んだ後にファイルを再生できないことです。私が再生できる他のaviファイルも再生できます。 – Sabzo
作成プログラムが終了したときの 'out.avi'ファイルのサイズは? – user3629249