我需要从一系列图像中编写视频。我正在使用此代码:
int main()
{
//Read sequence of images
Size frameSize(1360,1024);
//cout<<path<<endl;
VideoCapture sequence("path/fr%1d.jpg");
if (!sequence.isOpened())
{
cerr << "Failed to open Image Sequence!\n" << endl;
return -1;
}
//Write video
VideoWriter oVideoWriter ("path/MyVideo.avi",CV_FOURCC('8','B','P','S'), 15
, frameSize);
Mat imageGrey;
if(!oVideoWriter.isOpened())
{
cout<<"ERROR: Failed to write the video"<<endl;
return -1;
}
Mat Image;
int i=0;
while(true)
{
sequence>>Image;
if(Image.empty())
break;
cout<<i<<endl;
Mat imageArr[] = {Image, Image, Image};
merge(imageArr, 3, imageGrey);
//cvtColor(Image,imageGrey,CV_GRAY2BGR);
oVideoWriter.write(imageGrey);
i++;
}
cout<<"video written!"<<endl;
return 1;
}
与Windows 7相比,我的视频非常暗。我认为这是编解码器的问题。什么是适用于mac os x的最佳编解码器。感谢
答案 0 :(得分:2)
正如你所说,如果你将它与Windows进行比较,那可能就是编解码器问题。没有最好的编解码器;一些编解码器对于特定情况更好,而对于其他情况更糟。要使用的常见编解码器可能是使用CV_FOURCC('X', 'V', 'I', 'D')
的XVID,但无法保证您拥有它。
一个好的做法是在第一次运行的-1
构造函数中传递CV_FOURCC()
而不是cv::VideoWriter
宏。将弹出一个窗口,您可以看到可以使用的编解码器类型。如果您对其中一个感到满意,请找到该代码的4CC代码并在程序中对其进行硬编码。
您也可以尝试Perian访问Mac OS中的更多编解码器。