我使用matlab与使用mex的科学相机接口,我的matlab程序使用VideoWriter()
将文件写入光盘。相机具有RGB功能,如果我这样写文件,视频就可以了。但是,对于当前的应用程序,我需要灰度图像,因此我使用rgb2gray()
进行转换。不幸的是,当分析代码再次尝试读取视频文件时,我收到错误:
Error using VideoReader/init (line 450)
Unable to read the file. The file appears to be corrupt.
并试图用VLC读取视频确认它已损坏。我的代码在灰度和彩色版本之间的唯一区别是:
frame = rgb2gray(frame);
我的整个代码部分是:
vid = VideoWriter('testVid.avi');
vid.FrameRate = framerate;
vid.Quality = 100;
open(vid);
for i = 1 : frames;
%read frame data into variable 'frame'
frame = rgb2gray(frame);
writeVideo(vid,frame);
end
我花了很长时间与这个有任何想法的斗争?
答案 0 :(得分:2)
您需要在写完最后一帧后使用close(vid)
关闭视频对象。