我有一个数组的值,我把它变成一个彩色图像如下:
my_img = imagesc(my_data(:,:,tidx)); axis off; colormap('default'); c=colorbar; c.FontSize=26; c.FontWeight='bold';
我想知道是否可以循环my_data
中的所有索引值并将它们转换为GIF。
我试过这个:
for tidx = 5:64
my_img = imagesc(my_data(:,:,tidx)); axis off; colormap('default'); c=colorbar; c.FontSize=26; c.FontWeight='bold';
imwrite (my_img, int2str(tidx)+"_cspattern.png");
end
这给了我这个错误:
Error using imwrite (line 427)
Expected DATA to be one of these types:
numeric, logical
Instead its type was matlab.graphics.primitive.Image.
我查了一下,试了一下this solution:
for tidx = 5:64
my_img = imagesc(my_data(:,:,tidx)); axis off; colormap('default'); c=colorbar; c.FontSize=26; c.FontWeight='bold';
IMG_to_write = uint8(normalize(my_img, 'range', [0 255]));
imwrite(IMG_to_write, int2str(tidx)+"_cspattern.png");
end
但这给了我一个错误:
Error using normalize>checkSupportedArray (line 159)
Invalid data type. First argument must be a real numeric or logical array, a table or a timetable.
Error in normalize (line 86)
checkSupportedArray(A,method,methodType,false);
Error in GenerateFigures (line 18)
IMG_to_write = uint8(normalize(SavePattern, 'range', [0 255]));
我觉得好像我想多了,因为必须有一个简单的方法来加载我想要的数据,并将其保存为图像或一系列图像。
1条答案
按热度按时间jfewjypa1#
imagesc
生成一个图形对象,而不是数据数组。它是用来将图像显示为图形,而不是保存到文件中。您需要直接将图像数据与所需的颜色Map表沿着交给imwrite
。如果要像
imagesc
那样缩放每个图像以便使用整个颜色范围,则可以手动执行此操作。