使用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帧,所以我不知道大小是否有问题?
非常感谢任何帮助,谢谢。
答案 0 :(得分:2)
我已使用以下内容创建AVI
edgeMov = avifile('video.avi','compression','Indeo5','fps',15,'quality',95);
试一试。