网上有示例,Learn OpenCv,O'reilly 中给出了代码。
经过多次尝试后,out.avi 文件写入了 0 字节。
我想知道我哪里出错了。
以下是我使用的代码...
int main(int argc, char* argv[]) {
CvCapture* input = cvCaptureFromFile(argv[1]);
IplImage* image = cvRetrieveFrame(input);
if (!image) {
printf("Unable to read input");
return 0;
}
CvSize imgSize;
imgSize.width = image->width;
imgSize.height = image->height;
double fps = cvGetCaptureProperty(
input,
CV_CAP_PROP_FPS
);
CvVideoWriter *writer = cvCreateVideoWriter(
"out.avi",
CV_FOURCC('M', 'J', 'P', 'G'),
fps,
imgSize
);
IplImage* colourImage;
//Keep processing frames...
for (;;) {
//Get a frame from the input video.
colourImage = cvQueryFrame(input);
cvWriteFrame(writer, colourImage);
}
cvReleaseVideoWriter(&writer);
cvReleaseCapture(&input);
}
我打赌 cvCreateVideoWriter 返回 NULL。只需一步步查看它是否属实。在这种情况下,问题可能出在 CV_FOURCC(..) 上,它找不到编解码器并强制返回 0;
您可以尝试使用 -1 而不是 CV_FOURCC。运行时会提示您选择合适的编解码器
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)