一、灰度图(单通道图、黑白图)
单通道图就是指维度数为 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)