用Matlab读取剪切AVI文件

用Matlab读取剪切AVI文件,matlab,avi,Matlab,Avi,我正试图将一个AVI文件读入Matlab,但在剪切框架时遇到了一个问题。我正在使用Mathworks的Mathworks视频阅读器的Matlab代码,只做了一些小的修改 xyloObj = VideoReader('video.avi'); nFrames = xyloObj.NumberOfFrames; vidHeight = xyloObj.Height; vidWidth = xyloObj.Width; % Preallocate movie structure. mov(1:nF

我正试图将一个AVI文件读入Matlab,但在剪切框架时遇到了一个问题。我正在使用Mathworks的Mathworks视频阅读器的Matlab代码,只做了一些小的修改

xyloObj = VideoReader('video.avi');

nFrames = xyloObj.NumberOfFrames;
vidHeight = xyloObj.Height;
vidWidth = xyloObj.Width;

% Preallocate movie structure.
mov(1:nFrames) = ...
    struct('cdata', zeros(vidHeight, vidWidth, 3, 'uint8'),...
           'colormap', []);

% Read one frame at a time.
for k = 1 : nFrames
    mov(k).cdata = read(xyloObj, k);
end

imagesc(mov(1).cdata)
colormap gray
下面是视频中的一帧。以前有人遇到过这种情况吗?这段视频是由一家公司制作的。在VLC中播放时,视频显示没有剪切。我知道我可以通过一个简单的图像处理操作来纠正剪切,但我宁愿完全避免这个问题。提前谢谢。

我通过使用将文件从YUY2转换为RGB24修复了该问题。新文件大了50%,但Matlab可以正确读取,而且不会剪切。

感谢您添加图像,Gaurav!在进一步研究了这个问题之后,我注意到Matlab将此文件的视频压缩类型视为“YUY2”。对于类型为“MSVC”的文件,Matlab似乎没有此问题。我现在正尝试将视频转换为MSVC,它对应于Microsoft video 1格式。