Matlab:编写avi文件

时间:2011-07-26 12:29:51

标签: matlab video-processing

使用Matlab创建avi文件时遇到问题。我的目标是在整个视频上使用边缘滤镜,并将文件保存为avi。过滤器工作正常,我的问题是编写avi文件。

我的代码:

vidFile = VideoReader('video.avi');
edgeMov = avifile('edges','fps',30);

for i = 1:vidFile.numberofframes
  frameI = read(vidFile,i);
  frameIgray = rgb2gray(frameI);
  edgeI = edge(frameIgray,'canny',0.6);
  edgeIuint8 = im2uint8(edgeI);
  edgeIuint8(:,:,2) = edgeIuint8(:,:,1);
  edgeIuint8(:,:,3) = edgeIuint8(:,:,1);
  edgeMov = addframe(edgeMov,edgeIuint8);
end

edgeMov = close(edgeMov)

当循环结束并且avifile关闭时,我会播放视频并显示“Windows Media Player在播放此文件时遇到问题”。我也试过,没有成功,Media Player Classic和VLC让我相信问题必须是文件本身。使用GSpot我检查了文件,它说AVI标头已损坏。

再次重试循环返回完全相同的问题。令我困惑的是,当我为较少数量的帧运行循环时,例如30,视频写得很好,我可以观看它。我试图转换的视频大小超过1000帧,所以我不知道大小是否有问题?

非常感谢任何帮助,谢谢。

1 个答案:

答案 0 :(得分:2)

我已使用以下内容创建AVI

edgeMov = avifile('video.avi','compression','Indeo5','fps',15,'quality',95); 

试一试。