一、通道拆分 二、通道合并 一、通道拆分 就是把一幅图像拆分成BGR三个通道。有两种方式,拆分效果相同。 方式一: b = image[:, :, 0] #得到0通道。就是一个二维数组。也就是一个灰度图像。【例1】 g = image[:, :, 1] r = image[:, :, 2] 方式二:使用split()函数 b,g,r = cv2.split(image) #一次得到三个通道。【例2】 b = cv2.split(image)[0] #每次只得到一个通道。【例3】 例1: ''' 通道拆分 ''' import cv2 image = cv2.imread("image\\lenacolor.png") b = image[:,:,0] g = image[:,:,1] r = image[:,:,2] cv2.imshow("lena",image) cv2.imshow("b",b) cv2.imshow("g",g) cv2.imshow("r",r)
cv2.waitKey() cv2.destroyAllWindows() |
结果: 
例2: ''' 通道拆分 ''' import cv2 image = cv2.imread("image\\lenacolor.png") b,g,r = cv2.split(image) #拆分
cv2.imshow("lena",image) cv2.imshow("b",b) cv2.imshow("g",g) cv2.imshow("r",r)
cv2.waitKey() cv2.destroyAllWindows() |
结果: 
例3: ''' 通道拆分 ''' import cv2 image = cv2.imread("image\\lenacolor.png") b = cv2.split(image)[0] #得到第0个通道。
cv2.imshow("lena",image) cv2.imshow("b",b) cv2.waitKey() cv2.destroyAllWindows() |
结果: 
二、通道合并 把三个通道合并到一起,得到彩色图像。 cv2.merge([b,g,r]) #合并。要注意顺序。【例1】【例2】 例1: ''' 通道合并 ''' import cv2 image = cv2.imread("image\\lenacolor.png") b,g,r = cv2.split(image) #拆分。 result = cv2.merge([b,g,r]) #注意顺序是bgr,不是rgb result2 = cv2.merge([r,g,b]) #错误的顺序。
cv2.imshow("lena",image) cv2.imshow("result",result) cv2.imshow("result2",result2) cv2.waitKey() cv2.destroyAllWindows() |
结果: 
例2:自己生成两个通道,然后合并 ''' 通道合并 ''' import cv2 import numpy as np image = cv2.imread("image\\lenacolor.png") rows,cols,chn = image.shape
b = np.zeros((rows, cols), image.dtype) #生成rows行,cols列的全零矩阵。数据类型是image.dtype。作为b通道。 g = np.zeros((rows, cols), image.dtype) #生成g通道。 r = cv2.split(image)[2] result = cv2.merge([b,g,r]) #注意顺序是bgr,不是rgb cv2.imshow("lena",image) cv2.imshow("result",result) cv2.waitKey() cv2.destroyAllWindows() |
结果: 
|