一、灰度图(单通道图、黑白图)
单通道图就是指维度数为2,或者第三维为1的的图,也称 灰度图,可以理解为 黑白图。
图像的每个 像素点 只能有 一个值 表示颜色,像素值范围是 [0~255] 。以下两个图都是灰度图,只是灰度的等级不同,第一个图中每个像素点的值要么为0要么为255;第二张图每个像素点的值就是一个 [0~255] 区间。
二、彩色图(RGB图、三通道图)
彩色图每个 像素点 都有 3个值 表示颜色,所以称 3通道。例如 RGB图片 有三个通道,它就是彩色图。
如果某个位置上三个通道的值都相同,图片也会是黑白色的,看起来和灰度图一样,但它本质上区别于灰度图。
一般就叫做普通的三通道图。也就是说:三通道图可以是灰度图,但单通道图只能是灰度图。
三、判断图片是灰度图
还是三通道黑白颜色的图
如果是 三通道图,位深度是 24;
如果是 单通道图(灰度图),位深度是 8;
四、单通道图与三通道图相互转化
【单通道图】 转化为 【普通三通道图】
第一种方法:stacked_img = np.stack((gray_img,)*3, axis=-1)
第二种方法:img = cv2.cvtColor(img , cv2.COLOR_GRAY2RGB)
【单通道图】 转化为 【RGB图】
opencv、PIL都不支持,需要使用上色算法
【彩色图、三通道图】 转化为 【单通道图】
第一种方法(读取时就转化):img = cv2.imread('test.jpg', 0) # 参数0等价于:cv2.IMREAD_GRAYSCALE。 如果不加0,会默认读取为三通道图像,即使原图像是灰度图。
第二种方法(读取后再转化):img = cv2.cvtColor(img , cv2.COLOR_RGB2GRAY)
PIL的方法(读取时就转化): img = Image.open('test.jpg').convert('L') # 参数为"1"时表示转化为二值化图(位深度为1,每个像素点的值为0或1)