圖像通道的分離與合並


 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 # 版權聲明:本文為博主原創文章,轉載請附上博文鏈接!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM