我正在尝试此代码:
//[Code omitted ...]
Mat outputframe (frame1.rows*2, frame1.cols*4,CV_8UC3);
VideoCapture myvideo(path);
VideoWriter outputVideo;
outputVideo.open(outputName, CV_FOURCC_DEFAULT, myvideo.get(CV_CAP_PROP_FPS),(outputframe.size()),true);
//[Code omitted:Start cycling on the video and]
Mat elaboratedFrame(frame1.rows*2, frame1.cols*4,CV_8UC3)
//[Code omitted:Elaborating the frame "elaboratedFrame"]
elaboratedFrame.copyTo(outputframe);
outputVideo<< outputframe;
//[Code omitted ...]
我在Mac上(通过macports安装OSX Lion和OpenCV 2.4.6),每当我尝试运行我得到的代码时: 1)在我打开outputvideo的行上:
警告:无法创建空的电影文件容器。
2)当我运行程序时,我在VideoWriter的行上出现了这个错误:
OpenCV错误:cvCvtColor中的断言失败(dst.data == dst0.data)
或(如果我尝试使用cvtColor(elaboratedFrame, outputframe, CV_GRAY2RGB);
OpenCV错误:cvtColor中的断言失败(scn == 3 || scn == 4)
如果我选择其他编解码器(MP4,MPEG,MJPG,FFMPEG ecc),该程序显然不会创建任何内容并且无需更改。我对这个错误很生气。谁发出了同样的问题并且可能解决了? 提前谢谢大家。
答案 0 :(得分:0)
我解决了这个问题。我犯了很多错误:
1)Mat outputframe (frame1.rows*2, frame1.cols*4,CV_8UC3);
在此声明之后,我将frame1实际信息放在一行中。这导致了
OpenCV错误:cvCvtColor中的断言失败(dst.data == dst0.data)
2)我在为文件创建正确的文件路径时犯了一个错误。这导致了
警告:无法创建空的电影文件容器。
3)最后一个断言是cvtColor(elaboratedFrame, outputframe, CV_GRAY2RGB);
错误的错误