1

我正在尝试从我拥有的一组大型原始图像中创建一些视频。

代码如下:

int imageWidth=687;
int imageHeight=916;
int fps=3;
int ex=-1;
CvSize size = cvSize(imageWidth,imageHeight);
VideoWriter outputVideo; 
outputVideo.open(MovieOutput, ex, fps, size, true);
if(outputVideo.isOpened())
{
    cout << "error opening output video";
}
for(int frameNo=0;frameNo<58;frameNo++)
{
    ostringstream outfilename;
    outfilename << InputDir<< (frameNo+1)<<".jpg";
    rawimages.Read(frameNo);
    Mat image=rawimages.ToOpencvImage();
    imwrite( outfilename.str(), image );
    outputVideo <<image;
    imshow("Image", image);
    if(waitKey(30) >= 0) break;
}

我可以看到图像显示在屏幕上,并且不同的 jpg 保存在硬盘上。

我可以看到输出 avi 已创建,但其大小为零。

这段代码有什么问题?

一些注意事项:

输出尺寸非常大。它可以生成那种大小的电影吗?

4

1 回答 1

0

总结评论:您将第二个参数传递给 VideoWriter open 命令,其值为 -1。这应该在 Windows 中打开一个编解码器选择对话框,但从 OpenCV 2.4.5 开始,该对话框似乎有问题 - 它出现了,但之后我无法写入文件。

直接选择编解码器效果很好,在我看来更有意义。有关此命令和可用编解码器的更多信息,请参见此处

outputVideo.open("example.avi", CV_FOURCC('M','J','P','G'), fps, size, true);
于 2013-05-25T07:36:28.013 回答