OpenCVブックのチュートリアルに従っていますが、次のコードが機能しません。
#include <iostream>
#include <opencv/cv.h>
#include <opencv/highgui.h>
using namespace std;
int main() {
string arg1 = "new.mov";
string arg2 = "mov.mov";
CvCapture* capture = 0;
capture = cvCreateFileCapture(arg1.c_str());
if(!capture){
return -1;
}
IplImage *bgr_frame=cvQueryFrame(capture);
double fps = cvGetCaptureProperty (
capture,
CV_CAP_PROP_FPS
);
CvSize size = cvSize(
(int)cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_WIDTH),
(int)cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_WIDTH)
);
CvVideoWriter* writer = cvCreateVideoWriter(
arg2.c_str(),
CV_FOURCC('N', 'T', 'S', 'C'),
fps,
size
);
IplImage* logpolar_frame = cvCreateImage(
size,
IPL_DEPTH_8U,
3
);
while((bgr_frame=cvQueryFrame(capture)) != NULL){
cvLogPolar(
bgr_frame, logpolar_frame,
cvPoint2D32f(bgr_frame->width/2, bgr_frame->height/2),
40,
CV_INTER_LINEAR+CV_WARP_FILL_OUTLIERS
);
cvWriteFrame(writer, logpolar_frame);
}
cvReleaseVideoWriter(&writer);
cvReleaseImage(&logpolar_frame);
cvReleaseCapture(&capture);
return 0;
}
コードを実行してもエラーは発生しません。代わりに、プログラムがコンソールに出力します。
WARNING: Could not create empty movie file container.
次の100行ほどが続きます:
Didn't successfully update movie file.
このエラー(またはそれが呼ばれるもの)は何を意味し、何が原因ですか?
これが役立つかどうかはわかりませんが、コーデック(本ではMJPGでした)に関するエラーが発生したため、に変更CV_FOURCC('M', 'J', 'P', 'G')
しましたCV_FOURCC('N', 'T', 'S', 'C')
。