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