Matlab - VideoReader帧解码不准确

4

我正在使用Matlab处理视频,但遇到了麻烦。

我正在Mac OS X 10.8.2 (Mountain Lion)上使用Matlab R2012a。

我可以使用VideoReader载入视频并获取帧,如下所示:

vid = VideoReader('movie.mp4');
pic = read(vid, 20);
imshow(pic);

然而,在Matlab中我看到的是...(图片)。
与此相比,在VLC中是这样的...(图片)。
不仅运动被搞乱了(青绿色卡车),而且背景中的绿色卡车在那一帧中实际上已经消失了。我猜测编解码器以某种方式压缩了电影,而Matlab没有对此进行补偿。然而,我找不到其他任何Matlab可以接受的视频格式。
显示的视频是mpeg4,yuv420p。我看到Matlab提到了很多关于支持mpeg2和AVI是首选的内容。我使用ffmpeg将视频转换为各种格式,但是Matlab对每种其他文件格式都给出了以下错误:
VideoReader / init(第447行)出错 无法初始化内部资源。
VideoReader(第132行)中的错误 obj.init(fileName);
有什么想法吗?

2
根据VideoReader的文档,它在Mac上使用QuickTime进行编解码。你在Windows上尝试过吗?(在Windows上它使用DirectShow)另外,你可以尝试更新QuickTime看看是否有帮助。 - wakjah
1个回答

3

明白了。

感谢@wakjah提供有关QuickTime的提示。一位视频编辑朋友建议使用MPEG StreamClip将其转换为QuickTime格式。

这个工具可以将我的mp4文件导出为QuickTime格式。

果然,Matlab轻松加载了mov文件,并且伪影消失了。

干杯。


谢谢,你真是救命稻草! - Sadjad

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接