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.在运行期间会提示您选择适当的编解码器