我正在尝试处理OpenCV中的一对视频文件中的每个帧,然后将生成的帧写入输出avi文件。一切正常,除了输出视频文件看起来很奇怪:图像重复三次并且水平压缩,而不是一个实心图像,因此所有三个副本都适合窗口。我怀疑作者期望的频道数量出现了问题,但是我给它写了8位单通道图像。以下是我正在初始化我的录像机的设置:
//Initialize the video writer
CvVideoWriter *writer = cvCreateVideoWriter("out.avi",CV_FOURCC('D','I','V','X'), 30, frame_sizeL, 0);
之前有没有人从openCV录像机遇到过这个奇怪的输出?我一直用cvSaveImage检查生成的帧只是为了看看我的处理步骤是否创建了“三倍”图像,但事实并非如此。只有当我用cvWriteFrame写入输出avi时,图像才会被“三倍化”并压缩。
编辑:所以我发现这只有在我尝试使用写帧编写单通道图像时才会发生。如果我写3通道8位RGB图像,输出视频就好了。它为什么这样做?初始化CvVideoWriter时,我正确地为颜色参数传递“0”,因此应该期待单通道图像。
答案 0 :(得分:0)
在C ++版本中,您必须告诉cv :: VideoWriter您通过将最后一个参数设置为“false”来发送单个通道图像,您确定要这样做吗?
编辑:或者您可以使用cvtColor()和CV_GRAY2RGB将灰度图像转换为颜色