在网上有例子和学习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); }
Eric.. 13
我敢打赌,cvCreateVideoWriter返回NULL.只需单步执行即可查看是否属实.在这种情况下,问题可能是CV_FOURCC(..),它没有找到编解码器并强制返回0;
您可以尝试使用-1而不是CV_FOURCC.在运行时期间会有一个提示,您可以选择适当的编解码器
我敢打赌,cvCreateVideoWriter返回NULL.只需单步执行即可查看是否属实.在这种情况下,问题可能是CV_FOURCC(..),它没有找到编解码器并强制返回0;
您可以尝试使用-1而不是CV_FOURCC.在运行时期间会有一个提示,您可以选择适当的编解码器