Mac 上的 OpenCV VideoWriter 错误

Posted

技术标签:

【中文标题】Mac 上的 OpenCV VideoWriter 错误【英文标题】:OpenCV VideoWriter errors on Mac 【发布时间】:2014-11-10 16:18:13 【问题描述】:

我正在尝试这段代码:

//[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)在我打开输出视频的那一行:

警告:无法创建空电影文件容器。

2) 当我运行程序时,我在 VideoWriter 的行上收到此错误:

OpenCV 错误:cvCvtColor 中的断言失败 (dst.data == dst0.data)

或者(如果我尝试使用cvtColor(elaboratedFrame, outputframe, CV_GRAY2RGB);

OpenCV 错误:在 cvtColor 中断言失败 (scn == 3 || scn == 4)

如果我选择其他编解码器(MP4、MPEG、MJPG、FFMPEG ecc),该程序显然不会创建任何内容并且没有任何变化。我对这个错误很生气。任何人都发布了同样的问题并可能解决了它? 提前谢谢大家。

【问题讨论】:

我解决了警告问题:这是由于在创建视频的目标路径时出错。仍然是问题 2 【参考方案1】:

我解决了这个问题。我犯了很多错误:

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); 的错误,这是错误的

【讨论】:

以上是关于Mac 上的 OpenCV VideoWriter 错误的主要内容,如果未能解决你的问题,请参考以下文章

在 Mac OSX 中使用 cv::VideoWriter 会产生“警告:无法创建空电影文件容器”。

OPENCV,无法打开类 VideoWriter

opencv-videowriter

使用opencv中的VideoWriter函数,保存视频

OpenCV VideoWriter 不写任何东西

OpenCV:来自 VideoWriter 的写入是不是应该在独立线程中运行?