Matlab 认为它编写的 AVI 已损坏

Matlab thinks an AVI it's written is corrupt

我正在使用 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

我花了太长时间来解决这个问题,有什么想法吗?

您需要关闭视频对象,在写完最后一帧后使用close(vid)