Opencv學習筆記03 -- 通道分離

簡介

我們知道任何一張彩色圖片都是由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維矩陣圖像

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章