Mac上的OpenCV VideoWriter错误

时间:2014-11-10 16:18:14

标签: c++ macos opencv macports

我正在尝试此代码:

//[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),该程序显然不会创建任何内容并且无需更改。我对这个错误很生气。谁发出了同样的问题并且可能解决了? 提前谢谢大家。

1 个答案:

答案 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);错误的错误