簡介
我們知道任何一張彩色圖片都是由3個通道組成的即(RGB)
而任何一張黑白圖片只有兩個通道
在RGB中每一個通道的取值時0-255,如下圖所示
操作(分離圖片通道)
import cv2
p = cv2.imread('1024px-RGB_Cube_Show_lowgamma_cutout_b-1024x768.png',1)
cv2.imshow('p',p)
#分離通道
b,g,r= cv2.split(p)
cv2.imshow('blue',b)
cv2.imshow('green',g)
cv2.imshow('red',r)
cv2.waitKey(0)
cv2.destroyAllWindows()
原圖:
B,G,R:
BLUE
GREEN
RED
這裏可能會有疑問,爲什麼BGR的圖是黑白的,這是因爲一旦一張圖只是單通道輸出,那麼就會降到維到黑白顏色上來。
此處還要補充一點OPENCV中的顏色通道順序爲BGR,應該注意split後接收的順序
我們可以打印一下圖片的shape來查看是否降維成爲二維
我們發現是二維
操作(合併通道)
import cv2
import numpy as np
p = cv2.imread('1024px-RGB_Cube_Show_lowgamma_cutout_b-1024x768.png',1)
cv2.imshow('p',p)
#調用numpy建立一個和圖片一樣大小的矩陣,其餘項用0填充,用python的切片功能使得矩陣中包含有圖中的二維數組
zeros = np.zeros(p.shape[:2],dtype='uint8')
b,g,r = cv2.split(p)
cv2.imshow('blue',cv2.merge([b,zeros,zeros]))
cv2.imshow('green',cv2.merge([zeros,g,zeros]))
cv2.imshow('red',cv2.merge([zeros,zeros,r]))
cv2.waitKey(0)
cv2.destroyAllWindows()
效果:
這樣我們就得到了一個單通道的3維矩陣圖像