彩色圖像拆分與合并 外面的世界很精彩,很繽紛,很鮮艷,很五顏六色...... 通常我們拍攝的圖片都是彩色的,即RGB圖像。自然界中的絕大多數(shù)顏色也都可以看作是由紅(Red)、綠(Green)、藍(Blue)三種顏色組合而成。 在圖像處理中把R、G、B看作是三個通道,可以把一幅彩色圖像的三個通道拆分出來,也可以將拆分出來的三個通道合并回去。 1、RGB拆分三通道 如下圖所示,第一張為美女lena的原圖,后面三張是拆分過的三通道的圖像。 你會發(fā)現(xiàn),怎么顯示出來都是灰度圖像呢,沒錯,實驗做出來就是這個樣子的。 源代碼如下: import cv2 src = cv2.imread('E:/image/le.jpg') b,g,r=cv2.split(src) cv2.imshow("src",src) cv2.imshow("b",b) cv2.imshow("g",g) cv2.imshow("r",r) cv2.waitKey(0) 第一行,導入opencv包 第二行,讀入圖片 第三行,拆分三通道 后面四行,顯示源圖片,三通道的圖片 從代碼你會發(fā)現(xiàn),其實就是用了opencv的函數(shù)split(),來對彩色圖像進行拆分。 但是要注意一點哦,拆分出來的三通道順序是b,g,r,而不是我們認為的順序R,G,B。 2、融合各通道顏色 上圖好像不太好區(qū)分到底哪張圖片是哪個通道的,來看看下圖吧。 各通道顏色是不是很清晰,很明顯,看一眼便知。 但這只是合并進去的顏色哦,看代碼可知。 import cv2 import numpy as np src = cv2.imread('E:/image/le.jpg') b,g,r=cv2.split(src) zeros = np.zeros(src.shape[:2],dtype="uint8") b=cv2.merge([b,zeros,zeros]) g=cv2.merge([zeros,g,zeros]) r=cv2.merge([zeros,zeros,r]) cv2.imshow("src",src) cv2.imshow("b",b) cv2.imshow("g",g) cv2.imshow("r",r) 第一行,導入opencv包 第二行,導入numpy包,numpy是比較著名的一個包,常用于科學計算等 第三行,讀入圖片 第四行,拆分圖片 第五行,創(chuàng)建與源圖片大小相同的數(shù)組,全部設置為0 第六、七、八行,是融合三通道回RGB圖片,因為只想分別顯示各通道的圖片,所以除了要顯示的通道外,其余兩個通道均用0。 后四行,顯示圖片 3、彩色圖像的融合 上幅圖片其實已說明了如何進行三通道的融合,就是用merge()函數(shù)。 import cv2 src = cv2.imread('E:/image/le.jpg') b,g,r=cv2.split(src)#拆分 dst=cv2.merge((b,g,r))#融合 cv2.imshow("src",src) cv2.imshow("dst”,dst) 上述代碼比較簡單,先將源圖片進行拆分,再對其進行融合,即要得到下面的結(jié)果,可以看出,兩張圖片是一樣一樣的。 |
|
來自: pythonjava學習 > 《python圖像處理》