Learn OpenCv,Orielly 中给出了网上的示例和代码。
经过多次尝试,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。在运行时会提示您选择合适的编解码器
关于c - 在 OpenCV 中编写 AVI 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/368967/