在OpenCV中编写AVI文件

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&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...