1

我试图在 OpenCV 中处理一对视频文件中的每一帧,然后将生成的帧写入输出 avi 文件。一切正常,只是输出的视频文件看起来很奇怪:不是一张实心图像,而是图像重复三次并水平压缩,因此所有三个副本都适合窗口。我怀疑作者期望的通道数量有问题,但我给它写的是 8 位单通道图像。以下是我初始化我的录影机的设置:

  //Initialize the video writer
  CvVideoWriter *writer = cvCreateVideoWriter("out.avi",CV_FOURCC('D','I','V','X'), 30, frame_sizeL, 0);

以前有没有人遇到过来自 openCV videowriter 的这种奇怪的输出?我一直在用 cvSaveImage 检查生成的帧,只是想看看我的处理步骤是否以某种方式创建了“三倍”图像,但事实并非如此。只有当我使用 cvWriteFrame 写入输出 avi 时,图像才会“三倍”并被压缩。

编辑:所以我发现这只发生在我尝试使用写入帧写入单通道图像时。如果我写 3 通道 8 位 RGB 图像,输出视频结果很好。为什么要这样做?在初始化 CvVideoWriter 时,我正确地为颜色参数传递了“0”,所以它应该期待单通道图像。

4

1 回答 1

0

在 C++ 版本中,您必须通过设置最后一个参数“false”来告诉 cv::VideoWriter 您正在发送单通道图像,您确定要这样做吗?

编辑:或者,您可以使用cvtColor()和 CV_GRAY2RGB将灰度图像转换为颜色

于 2010-06-24T17:22:55.540 回答