0

我有 300 帧 RGB mat 数据,我想知道是否有办法使用 videowriter 将这些 mat 帧转换为 avi 文件?我尝试过使用 imwrite 和 videowriter,但我无法让代码正常工作。

4

1 回答 1

0

我不确定您的数据是如何格式化的,但这里有一个小程序可以帮助您入门:

% Generate sample frames
for i = 1:300
    frames{i} = rand(240, 300, 3);
end

% Write sample frames to disk
v = VideoWriter('c:/data/test.avi');
v.open;
for i = 1:300
    v.writeVideo(frames{i});
end
v.close;

您可以调整 AVI 中的许多参数,包括文件格式和帧速率。请参阅VideoWriter 文档

如果mat 数据是指包含带有帧信息的单个变量的单独 mat 文件,则需要在循环中加载每个 mat 文件并将数据写入 VideoWriter 对象。例如,假设所有 mat 文件都在c:/data/frames文件夹下,并且名称采用frame1.mattoframe300.mat格式,并且每个 mat 文件都有一个名为 的变量frame

for i = 1:300
    load (sprintf('c:/data/frames/frame%d.mat', i), 'frame');
    v.writeVideo(frame);
end
于 2013-07-11T17:44:12.200 回答