图像通道的分离与合并

 1 import cv2
 2 import numpy as np
 3 
 4 img=cv2.imread('C:/Users\zp\Desktop\op\images/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,00)从而显示只有红色通道的图
20 # merge()函数的使用
21 # 有人可能会问,不是R,G,B吗,为什么B通道反而放在图像的第一位,如(B,00)?
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,00)图像
26 cv2.imshow("GREEN",cv2.merge([zeros,G,zeros]))#显示(0,G,0)图像
27 cv2.imshow("RED",cv2.merge([zeros,zeros,R]))#显示(00,R)图像
28 cv2.waitKey(0)
29 cv2.destroyAllWindows()
30 
31 
32 # 把 分离出来的R,G,B通道的值重新合并在一起
33 image=cv2.imread("C:/Users\zp\Desktop\op\images/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 # 版权声明:本文为博主原创文章,转载请附上博文链接!

posted @ 2019-03-06 16:11  山水之乐也  阅读(1268)  评论(0编辑  收藏  举报