我有以下代码:
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()保存它时会变黑。请告诉我我做错了什么。
答案 0 :(得分:2)
如果要保存double
图像,则需要将所有值标准化为0到1(可能使用mat2gray
)。
imwrite(mat2gray(edgeImageD), OutputFileName)
如果A是数据类型为double或single的灰度或RGB彩色图像,则imwrite假定动态范围为[0,1]并自动将数据缩放255,然后将其作为8位值写入文件。如果A中的数据是单个,则在写入GIF或TIFF文件之前将A转换为double。