乐趣区

关于python:灰度图单通道图RGB图三通道图的区别与转化

一、灰度图(单通道图、黑白图)

单通道图就是指维度数为 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)

退出移动版