一、通道拆分
二、通道合并
一、通道拆分
就是把一幅图像拆分成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()
|
结果:
|