【问题标题】:creating a grayscale video using opencv使用opencv创建灰度视频
【发布时间】:2014-04-14 17:35:09
【问题描述】:

我需要在 Mac os X 10.8 上使用 OpenCV 保存来自 GIge 相机的灰度视频。我使用了这段代码:

 namedWindow("My video",CV_WINDOW_AUTOSIZE);
 Size frameSize(659, 493);
 VideoWriter oVideoWriter ("MyVideo.avi",-1, 30, frameSize, false);

 While(1)
 {
 ...
     Mat Image=Mat(Size(GCamera.Frames[Index].Width,GCamera.Frames[Index].Height),CV_8UC1,GCamera.Frames[Index].ImageBuffer);

     oVideoWriter.write(Image);
 ...   
 }

我收到了这个错误:

OpenCV 错误:cvtColor 中的断言失败 (scn == 3 || scn == 4),文件 /Users/rosa/OpenCV-2.4.3/modules/imgproc/src/color.cpp,第 3270 行 libc++abi.dylib:终止调用抛出异常 程序意外结束。

【问题讨论】:

  • 可能你的框架是空的。请查看此帖子this。他遇到了同样的错误。
  • @Constantine,不,因为我在硬盘上显示并保存帧,这是正确的。
  • @Constantine,在我的代码中,我没有在任何地方使用 cvtColor,因为获取的帧最初是灰度的。我注意到错误在这一行 oVideoWriter.write(Image);

标签: c++ opencv camera


【解决方案1】:

我是这样弄的:

 VideoWriter oVideoWriter ("MyVideo.avi",CV_FOURCC('M','J','P','G'), 30, frameSize);

 While(1)
 {
     Mat Image=Mat(Size(GCamera.Frames[Index].Width,GCamera.Frames[Index].Height),CV_8UC1,GCamera.Frames[Index].ImageBuffer);
     Mat colorFrame;
     cvtColor(Image, colorFrame, CV_GRAY2BGR);
     oVideoWriter.write(colorFrame);
 }

【讨论】:

  • 错误消失了,但视频无法播放,它的大小固定为 414 字节
【解决方案2】:

您的问题是您的操作系统。检查documentation,它说灰度功能仅在 Windows 上受支持。

虽然很容易修复,

cv::Mat imageGrey;
cv::Mat imageArr[] = {Image, Image, Image};
cv::merge(imageArr, 3, imageGrey);

oVideoWriter.write(imageGrey);

【讨论】:

  • 错误消失了,但视频无法播放,它的大小固定为 414 字节
  • 再次,操作系统。您只能在 Windows 上的视频编写器构造函数中使用 -1 标志。否则你需要 CV_FOURCC(...),我会检查文档。并确保一切顺利:docs.opencv.org/modules/highgui/doc/…
  • 我已经使用了 CV_FOURCC('8','B','P','S'),它现在正在工作!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-04
相关资源
最近更新 更多