imread在读取后更改图像

时间:2014-05-07 20:12:38

标签: image matlab image-processing

我有一个包含.png个文件的文件夹,我想将它们转换为.jpg。我编写了这段代码来处理所有这些代码并将它们转换为jpg

imgPath = 'C:\Users\SET1\writer_2\';
imgType = '*.png'; % change based on image type
images  = dir([imgPath imgType]);

newPath = 'C:\Users\Desktop\SET1\';

for idx = 1:length(images)
    Seq{idx} = imread([imgPath images(idx).name]);

    imwrite(Seq{idx}, strcat(newPath,images(idx).name, '.jpg'));
end

但我注意到,当它读取图像时,它会以某种方式改变它。例如,这是原始图像

enter image description here

这是读入的图像,这是保存为imwrite输出的内容

enter image description here

你基本上可以看到变化。首先它将图像反转,然后将笔的笔划转换为点的集合,就像在执行im2bw

时发生的情况一样

我不明白为什么会这样,以及如何解决它。

1 个答案:

答案 0 :(得分:1)

问题是图像是彩色映射的。您需要读取如下文件:

[I,map]=imread(yourPngFile);
imshow(I,map);
imwrite(I,map,outfilename);

如果您需要,可以将其转换并将其作为RGB图像保存在单元格数组中:

Seq{idx} = ind2rgb(I,map);

来源:

How do I load and show a PNG image in MATLAB?