这是我的示例程序,用于使用OpenCV从图像创建视频。
但是我的输出视频无法正常工作,并且出现错误并指出“无法多路分解流”
请帮忙。

  #include<cv.h>
  #include<highgui.h>
  #include<cvaux.h>
  #include<cxcore.h>

  int main()
{
    //CvVideoWriter *writer = 0;
    int isColor = 1;
    int fps     = 25;  // or 30
    int frameW  = 320; // 744 for firewire cameras
    int frameH  = 240; // 480 for firewire cameras
    CvSize size;

    size.width = frameW;
    size.height = frameH;
    CvVideoWriter *writer = cvCreateVideoWriter(
            "data3.avi",
            CV_FOURCC('M','J','P','G'),
            fps,
            size);
    IplImage* img = 0;
    img=cvLoadImage("IMG_0157.JPG");
    for(int counter=0;counter < 3000;counter++)
    {
    cvWriteFrame(writer,img);      // add the frame to the file
    }
    cvReleaseVideoWriter(&writer);
    return 0;
}

最佳答案

您可以尝试其他FOURCC代码。其中有些不受OpenCV的正确支持,有些不受多媒体应用程序的支持。拥有既可以与OpenCV一起使用又可以与您喜欢的视频播放器一起使用的播放器,这是反复试验的问题。

您可以尝试的方法:使用VLC(以防万一,不要使用它)。它是那里最强大的参与者之一。

如果您要做的只是将OpenCV中的一系列图像显示/处理为视频,则可以使用VideoCapture的未记录功能:加载一系列图像。

该示例使用C++,但是您可以轻松地将其转换为C。

// pics are a sequence of Pictures001.jpg, PicturesS002.jpg, etc
cv::VideoCapture cap("path/to/my/Pictures%03d.jpg");

cv::Mat frame;

for(;;)
{
    cap >> frame;
    if(frame.empty())
       break;

    // do some processing
}

10-07 19:54
查看更多