为什么使用imwrite保存图像会变黑?

时间:2016-12-09 17:05:16

标签: matlab

我有以下代码:

 grayImage=imread('coins.png');
edgeImageD = double(grayImage) - double(imdilate(grayImage,SE_3));
 OutputFileName = ['./output_images/'  'coins _edge.png'];

   imwrite((edgeImageD),OutputFileName);  
figure,imshow(edgeImageD, []),title('dilation');

输出图像有边缘,但是当我使用imwrite()保存它时会变黑。请告诉我我做错了什么。

1 个答案:

答案 0 :(得分:2)

如果要保存double图像,则需要将所有值标准化为0到1(可能使用mat2gray)。

imwrite(mat2gray(edgeImageD), OutputFileName)
  

如果A是数据类型为double或single的灰度或RGB彩色图像,则imwrite假定动态范围为[0,1]并自动将数据缩放255,然后将其作为8位值写入文件。如果A中的数据是单个,则在写入GIF或TIFF文件之前将A转换为double。