我最近开始将OpenCV用于涉及阅读视频的项目。我按照在线教程进行视频阅读,视频似乎没有任何问题。但是,当我显示视频中的任何帧时,最右边的列似乎已损坏。这是我用来读取和显示第一帧的代码。
VideoCapture cap("6.avi");
Mat frame;
cap>>frame;
imshow("test",frame);
waitKey(0);
这导致了一个框架,除了最右边的列之外,大部分看起来都很好。请参阅here。
在显示视频或帧之前,我没有对其进行任何修改。任何人都可以帮助弄清楚为什么会这样吗?
注意:我正在运行Ubuntu 14.04,OpenCV版本2.4.8
可以找到完整视频here。
答案 0 :(得分:1)
您的代码对我来说很好。你确定框架已损坏吗?调整大小,最大化,最小化“测试”GUI窗口,以查看右边缘是否仍然损坏。有时在显示非常小的图像时,我已经看到GUI窗口的右边缘显示不正确,即使框架是正确的。您也可以尝试imwrite("test.png",frame)
查看保存的图片是否仍然已损坏。
如果这没有用,那看起来就像是一个编解码器问题。确保您拥有最新版本的opencv,ffmpeg。
如果这仍然无效,则视频本身可能已损坏。您可以尝试使用ffmpeg
将其转换为其他格式