读取灰度图片,scm.imread 和cv2.imread的区别,

在进行图像的处理时,一定要清楚你处理的图像数据的格式

最近用到了灰度图像,由于对不同的图像读取函数内部机理不是那么清楚,导致走了很多弯路。

1、cv2.imread()函数读取灰度图像

# 加载灰度图像数据
img_gray_data = cv2.imread('./images/AN001.png')
print('数据类型:', type(img_gray_data))
print('数组类型:', img_gray_data.dtype)
print('数组形状:', img_gray_data.shape)
print('数组最大值:{},最小值:{}'.format(img_gray_data.max(), img_gray_data.min()))

结果如下:即使读取的图片为灰度图,cv2.imread()函数也会按bgr三个通道读取。这三个通道的像素值是相同的。

数据类型: <class 'numpy.ndarray'>
数组类型: uint8
数组形状: (490, 640, 3)
数组最大值:255,最小值:0

2、scm.imread()函数读取灰度图像

img = scm.imread('./images/AN001.png')
print('数据类型:', type(img))
print('数组类型:', img.dtype)
print('数组形状:', img.shape)
print('数组最大值:{},最小值:{}'.format(img.max(), img.min()))
数据类型: <class 'numpy.ndarray'>
数组类型: uint8
数组形状: (490, 640)
数组最大值:255,最小值:0

此函数读取的图像仅有一个亮度通道,需要谨慎处理。特别的设计到灰度图像和彩色图形跨域处理时。

3、scm.imresize()函数和transform.resize()函数对(490,640)二维灰度图像的处理

img_resize = scm.imresize(img, (256, 256, 3))
img_resize ==transform.resize(img, (256, 256, 3))
结果分别为:
# scm.imresize()函数
数组形状: (256, 256)
数组最大值:255,最小值:0
# transform.resize()函数
数组形状: (256, 256, 3)
数组最大值:1.0,最小值:0.0
前者对(490,640)二维数据进行了resize,而后者处理后变成了3通道数据,而且,像素值从0-255,变成了0-1,进行了归一化。




猜你喜欢

转载自blog.csdn.net/weixin_40546602/article/details/80763310