使用 OpenCV Python 拆分和合并通道

pythonserver side programmingprogramming

标准数字彩色图像由像素表示,每个像素都是原色的组合。通道是仅由彩色图像的一种原色组成的灰度图像。例如,RGB 图像有三个通道:红色、绿色和蓝色。

观察下面的彩色图像,看看每个通道分别是什么样子的:

下面的灰度图像是 RGB 图像每个通道的表示。

在本文中,我们将讨论如何使用 python openCV 库拆分和合并图像的通道。

拆分通道

Python OpenCV 模块提供了一个函数 cv2.split() 来拆分将多通道/彩色数组拆分为单独的单通道数组。它将返回一个包含三个通道的数组,每个通道对应蓝色、绿色和红色通道,以二维 ndarray 表示。

语法

cv2.split(m[, mv])

其中,

  • src – 输入多通道数组。

  • mv – 输出数组或数组向量

示例

在此示例中,我们将拍摄彩色图像"OpenCV_logo.png",并将其拆分为 3 个通道。

import cv2

image = cv2.imread('Images/OpenCV_logo.png')
#将图像拆分为三个通道
(b_channel, g_channel, r_channel) = cv2.split(image)

#显示图像
cv2.imshow('蓝色通道',b_channel)
cv2.imshow('绿色通道',g_channel)
cv2.imshow('红色通道',r_channel)
cv2.waitKey(0)
cv2.destroyAllWindows()

输入图像

输出图像

彩色图像"OpenCV_logo.png"已拆分为三个灰度图像:r_channel("红色通道")、g_channel(绿色)、b_channel(蓝色)。

合并通道

cv2.merge() 函数采用单通道数组并将它们组合起来以生成多通道数组/图像。返回输入数组元素的连接数组。以下是merge()函数的语法-

cv2.merge(mv[, dst])

参数

  • mv:要合并的矩阵的输入向量。所有矩阵必须具有相同的大小和相同的深度。

  • count:必须大于零。当输入向量是纯C数组时,指定输入矩阵的数量。

  • dst:与输入数组具有相同大小和相同深度的输出数组。

示例

让我们将单独的蓝色,绿色和红色通道合并为BGR图像。

import cv2
image = cv2.imread('Images/OpenCV_logo.png')
#将图像分割成三个通道
(b_channel, g_channel, r_channel) = cv2.split(image)

#显示图像
cv2.imshow('蓝色通道',b_channel)
cv2.imshow('绿色通道',g_channel)
cv2.imshow('红色通道',r_channel)

#合并图像
image_merged = cv2.merge((b_channel,g_channel,r_channel))
cv2.imshow('合并图像',image_merged)
cv2.waitKey(0)
cv2.destroyAllWindows()

输入图像

输出图像

示例

在此示例中,我们将图像转换为 CMYK,然后拆分通道。

import cv2
import numpy as np

rgb = cv2.imread('Images/Tajmahal.jpg')
rgbdash = rgb.astype(np.float)/255。

K = 1 -np.max(rgbdash, axis=2)
C = (1-rgbdash [...,2] - K)/(1-K)
M = (1-rgbdash [...,1] - K)/(1-K)
Y = (1-rgbdash [...,0] - K)/(1-K)

# 将输入的 BGR 图像转换为 CMYK 颜色空间
CMYK = (np.dstack((C,M,Y,K)) * 255).astype(np.uint8)

# 拆分 CMYK 通道
Y, M, C, K = cv2.split(CMYK)

# 显示图像
cv2.imshow("Cyan",C)
cv2.imshow("Magenta", M)
cv2.imshow("Yellow", Y)
cv2.imshow("Key", K)

if cv2.waitKey(0):
    cv2.destroyAllWindows()

输入图像

输出图像青色

输出图像洋红色

输出图像黄色

输出图像键

在上面的例子中,RGB 图像被转换为​​ CMYK,并分成四个通道:青色、洋红色、黄色和键。


相关文章