学习资料来源链接: python3+opencv 图像通道的分离(split()函数)和合并(merge()函数)
分离图像的三个通道,注意通道的顺序是BGR:
import numpy as np
import cv2 #导入opencv模块
image=cv2.imread("bryant.jpg") #读取要处理的图片
B,G,R = cv2.split(image) #分离出图片的B,R,G颜色通道
cv2.imshow("RED COMPONENT FOR ALL THREE CHANNELS",R) #显示三通道的值都为R值时的图片
cv2.imshow("GREEN COMPONENT FOR ALL THREE CHANNELS",G) #显示三通道的值都为G值时的图片
cv2.imshow("BLUE COMPONENT FOR ALL THREE CHANNELS",B) #显示三通道的值都为B值时的图片
cv2.waitKey(0) #不让程序突然结束
执行结果截图:
分离图像的三个通道,其余通道置零,注意通道的顺序是BGR:
import numpy as np
import cv2 #导入opencv模块
image=cv2.imread("bryant.jpg") #读取要处理的图片
B,G,R = cv2.split(image) #分离出图片的B,R,G颜色通道
zeros = np.zeros(image.shape[:2],dtype="uint8") #创建与image相同大小的零矩阵
cv2.imshow("DISPLAY BLUE COMPONENT",cv2.merge([B,zeros,zeros])) #显示(B,0,0)图像
cv2.imshow("DISPLAY GREEN COMPONENT",cv2.merge([zeros,G,zeros])) #显示(0,G,0)图像
cv2.imshow("DISPLAY RED COMPONENT",cv2.merge([zeros,zeros,R])) #显示(0,0,R)图像
cv2.waitKey(0)
运行结果截图:
将提取出来的三个通道再重新合并回去:
import numpy as np
import cv2 #导入opencv模块
image=cv2.imread("bryant.jpg") #读取要处理的图片
B,G,R = cv2.split(image) #分离出图片的B,R,G颜色通道
cv2.imshow("MERGE RED,GREEN AND BLUE CHANNELS",cv2.merge([B,G,R])) #显示(B,G,R)图像
cv2.waitKey(0)
运行结果截图: