1 import cv2 2 import numpy as np 3 4 img=cv2.imread('C:/UserszpDesktopopimages/image7.jpg') 5 6 b,g,r=cv2.split(img) 7 cv2.imshow('Red1',r) 8 cv2.imshow('Green1',g) 9 cv2.imshow('Blue1',b) 10 cv2.waitKey(0) 11 cv2.destroyAllWindows() 12 # 为什么得到的是三张不同d灰度图呢?不是已经分离出R,G,B通道了吗?应该是分别是红色图,绿色图,蓝色图才对阿。 13 # 原因是:当调用 imshow(R)时,是把图像的R,G,B三个通道的值都变为R的值,所以图像的颜色三通道值为(R,R,R) 14 # 同理 imshow(G)和imshow(B)所显示d图像的颜色通道也依次为(G,G,G)和(B,B,B)。 15 # 而 当三个通道d值相同时,则为灰度图。 16 17 18 19 # 使用merge()函数将某一颜色通道(如R)与零矩阵合并,形成(R,0,0)从而显示只有红色通道的图 20 # merge()函数的使用 21 # 有人可能会问,不是R,G,B吗,为什么B通道反而放在图像的第一位,如(B,0,0)? 22 # 因为opencv中,就是调过来d,图像的第一通道是B,第二通道是G,最后是R。 23 B,G,R = cv2.split(img) #分离出图片的B,R,G颜色通道 24 zeros = np.zeros(img.shape[:2],dtype="uint8")#创建与image相同大小的零矩阵 25 cv2.imshow("BLUE",cv2.merge([B,zeros,zeros]))#显示 (B,0,0)图像 26 cv2.imshow("GREEN",cv2.merge([zeros,G,zeros]))#显示(0,G,0)图像 27 cv2.imshow("RED",cv2.merge([zeros,zeros,R]))#显示(0,0,R)图像 28 cv2.waitKey(0) 29 cv2.destroyAllWindows() 30 31 32 # 把 分离出来的R,G,B通道的值重新合并在一起 33 image=cv2.imread("C:/UserszpDesktopopimages/image7.jpg")#读取要处理的图片 34 B,G,R = cv2.split(img) #分离出图片的B,R,G颜色通道 35 # zeros = np.zeros(image.shape[:2],dtype="uint8")#创建与image相同大小的零矩阵 36 cv2.imshow("MERGE",cv2.merge([B,G,R])) 37 cv2.waitKey(0) 38 cv2.destroyAllWindows() 39 40 import numpy as np; 41 import cv2; # 导入opencv模块 42 43 image = cv2.imread("/home/zje/Pictures/lena.jpeg"); # 读取要处理的图片 44 B, G, R = cv2.split(image); # 分离出图片的B,R,G颜色通道 45 zeros = np.zeros(image.shape[:2], dtype="uint8"); # 创建与image相同大小的零矩阵 46 cv2.imshow("MERGE", cv2.merge([B, G, R])); 47 48 49 50 51 # 作者:ZJE_ANDY 52 # 来源:CSDN 53 # 原文:https: // blog.csdn.net / u014453898 / article / details / 80715121 54 # 版权声明:本文为博主原创文章,转载请附上博文链接!