做深度学习项目图像处理的时候常常涉及到灰度图处理,这里对自己处理灰度图的方式做一个记录,后续有更新的话会在此更新
将多维数组可视化为灰度图
- img_gray = Image.fromarray(img, mode='L') # 实现array到image的转换,model 常用的模式有‘1’,‘L’,‘RGB’, 1是二值图像,L是灰度图像,RGB是彩色图像
- img_gray.show() # 显示灰度图

拉伸对比图突出想可视化的部分
- # 对比度拉伸
- Imax = np.max(img) # img是多维数组,输入灰度图的时候注意先np.array转一下
- Imin = np.min(img)
- MAX = 1200
- MIN = 0
- img_cs = (img - Imin) / (Imax - Imin) * (MAX - MIN) + MIN # img_cs是多维数组
- cv2.imshow('img_cs', img_cs.astype("uint8")) # 可视化
- cv2.waitKey(0)
- cv2.destroyAllWindows()

拉伸灰度加强对比
- def gray_scale(img_gray):
- img_gray = np.array(img_gray) # 转多维数组
- rows, cols = img_gray.shape
- flat_gray = img_gray.reshape((cols * rows,)).tolist()
- min1 = min(flat_gray)
- max1 = max(flat_gray)
- print('min = %d, max = %d' % (min1, max1))
- output = np.uint8(255 / (max1 - min1) * (img_gray - min1) + 0.5)
- return output
- img_gray = Image.fromarray(img, mode='L') # 实现array到image的转换,model 常用的模式有‘1’,‘L’,‘RGB’, 1是二值图像,L是灰度图像,RGB是彩色图像
- grayScale = gray_scale(img_gray) # 灰度拉伸
- cv2.imshow('grayScale', grayScale) # 显示拉伸后的灰度图
- cv2.waitKey(0)
- cv2.destroyAllWindows()
