如何在OpenCV Python中将图像拆分成不同的色彩通道?
彩色图像由三个色彩通道-红色,绿色和蓝色组成。可以使用 cv2.split() 函数拆分这些色彩通道。让我们看看将图像拆分成不同颜色通道的步骤-
- 导入所需的库。在以下所有示例中,所需的Python库是 OpenCV 。请确保您已安装它。
-
使用 cv2.imread() 方法读取输入图像。指定带有图像类型(即png或jpg)的图像的完整路径
-
在输入图像 img 上应用 cv2.split() 函数。它返回蓝色,绿色和红色通道像素值作为numpy数组。将这些值分配给变量。 blue,green和red。
blue,green,red = cv2.split(img)
- 显示三个通道作为灰度图像。
让我们看一些例子以清楚地理解。
我们将使用以下图像作为 输入文件 在下面的例子中−
示例
在此示例中,我们将输入图像拆分为其组成的颜色通道:蓝色,绿色和红色。我们还将这些颜色通道显示为灰度图像。
#导入所需的库
import cv2
# 读取输入彩色图像
img = cv2.imread('bgr.png')
# 拆分蓝色、绿色和红色色彩通道
blue,green,red = cv2.split(img)
# 显示三通道
cv2.imshow('蓝色通道', blue)
cv2.waitKey(0)
cv2.imshow('绿色通道', green)
cv2.waitKey(0)
cv2.imshow('红色通道', red)
cv2.waitKey(0)
cv2.destroyAllWindows()
输出
当您运行上面的Python程序时,它将产生以下 三个输出窗口 ,每个窗口都显示为灰度图像的彩色通道(蓝色,绿色和红色)。
示例
在此示例中,我们将输入图像拆分为其组成的颜色通道:蓝色,绿色和红色。我们还将这些颜色通道显示为彩色图像(BGR)。
# 导入必要的库
import cv2
import numpy as np
# 读取输入的彩色图像
img = cv2.imread('bgr.png')
# 分离蓝色、绿色和红色通道
blue,green,red = cv2.split(img)
# 定义所有像素值为0的通道
zeros = np.zeros(blue.shape, np.uint8)
# 合并通道以获得BGR图像
blueBGR = cv2.merge([blue,zeros,zeros])
greenBGR = cv2.merge([zeros,green,zeros])
redBGR = cv2.merge([zeros,zeros,red])
# 将三个蓝色、绿色和红色通道显示为BGR图像
cv2.imshow('Blue Channel', blueBGR)
cv2.waitKey(0)
cv2.imshow('Green Channel', greenBGR)
cv2.waitKey(0)
cv2.imshow('Red Channel', redBGR)
cv2.waitKey(0)
cv2.destroyAllWindows()
输出
运行上述Python程序时,将会产生下面的 三个输出窗口 每个窗口显示一个颜色通道(蓝色、绿色和红色)的彩色图像。