我有一个问题,当创建一个avi文件使用Matlab。我的目标是在整个视频上使用边缘过滤器,并将文件保存为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帧,所以我不知道大小是不是一个问题?
任何帮助都将不胜感激,谢谢。
发布于 2011-07-26 20:36:39
我已经使用以下代码创建了AVI
edgeMov = avifile('video.avi','compression','Indeo5','fps',15,'quality',95); 试试看。
https://stackoverflow.com/questions/6830018
复制相似问题