matlab rgb2gray() 的坑

ima = double(imread('data/house.png'));
ima = double(rgb2gray(uint8(ima)));

特别注意在在使用rgb2gray这个函数将3通道转化成单通道的时候,必须先将这个图像转化成uint8类型。如果不进行转化的话,由于此处的ima在读取之后变成了double数据类型,直接使用rgb2gray(ima)得到的矩阵的取值范围是在0-1范围之内的!这与造成imshow显示图像为全白的原因是一样的,imshow函数和rgb2gray函数,都会将double类型的数据视作0-1数值范围内的,如果原数据中含有大于1的数值,则这些数值都会被改为1!而imshow和rgb2gray函数把uint8类型的数据视作0-255范围之内的!

参考Imshow https://blog.csdn.net/tm807782912/article/details/46879315

你可能感兴趣的:(代码,matlab,计算机视觉,opencv)