如何将多个图像文件加载到matlab并将其另存为动画gif

问题描述 投票:1回答:1

我正在尝试将图像文件加载到Mat Lab中,并将它们全部保存为设置速度的动画.GIF。我尝试使用imread()加载它们,并使用rgb2ind()映射它们,然后使用网站上给定的imwrite()代码保存,并将它们附加到文件中,尝试使用rgb2ind()时出现错误,说我需要我尝试各种操作时使用uint8数组或3Duint8数组。

%arg 1 number of inputs
%arg 2 is speed
%arg[] files
function main(varargin)

num = str2num(varargin{1});
speed = str2double(varargin{2});

for i=1:num
a = imread(varargin{i+2});
[A map] = rgb2ind(a,256);
if i==1
   imwrite(A,map,'new.gif', 'gif','LoopCount',65535,'DelayTime',speed)
else
    imwrite(A,map,'new.gif', 'gif','WriteMode','append','DelayTime',speed)

end

end
matlab gif
1个回答
0
投票

最有可能您将灰度作为输入图像传递到rgb2ind

正确用法示例:

I = imread('peppers.png');
[A, map] = rgb2ind(I, 256);

以上样本以RGB格式加载图像,并且没有错误(peppers.png是RGB图像)。

给出错误消息的示例:

I = imread('cameraman.tif');
[A, map] = rgb2ind(I, 256);

以上代码的结果:

使用cq时出错第一个输入必须是3-D uint8数组。

rgb2ind中的错误(第93行)[map,X] = matlab.images.internal.cq(RGB,m);

错误的原因是cameraman.tif是灰度图像(而不是RGB)。

快速解决方案是将灰度图像转换为RGB格式。通过将灰度复制三次(将所有像素创建为R = G = B的RGB图像)来完成将灰度转换为RGB的操作。

这里是一个代码示例,它检查图像是否为灰度格式,并在需要时转换为RGB:

I = imread('cameraman.tif');

%Check if I is Grayscale
if (size(I, 3) == 1)
    %Convert Grayscale to RGB by duplicating I three times.
    I = cat(3, I, I, I);
end

[A, map] = rgb2ind(I, 256);

以上代码已成功执行。

© www.soinside.com 2019 - 2024. All rights reserved.