2.4 通道的拆分与合并

时间:2024-03-23 18:54:46

一、通道拆分

二、通道合并

 

 

 

一、通道拆分

就是把一幅图像拆分成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.4 通道的拆分与合并

 

 

 

例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()

 

结果:

 

2.4 通道的拆分与合并

 

 

例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()

结果:

2.4 通道的拆分与合并

 

 

 

 

二、通道合并

把三个通道合并到一起,得到彩色图像。

 

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.4 通道的拆分与合并

 

 

例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()

结果:

 

2.4 通道的拆分与合并