1.基本介紹
在OpenCV中,影像通道是按照 B 通道→G 通道→R 通道的順序存盤的,在影像處理程序中,可以根據需要對通道進行拆分和合并,
2.通道拆分
對于RGB影像,可以
索引的方式或者函式的方式分別拆分出其RGB通道,
b = img[ : , : , 0 ]
g = img[ : , : , 1 ]
r = img[ : , : , 2 ]
2.1通過索引拆分
import cv2
lena=cv2.imread("lena_color.jpg")
cv2.imshow("lena彩色原圖",lena)
b=lena[:,:,0] # 獲取影像的B通道
g=lena[:,:,1] # 獲取影像的G通道
r=lena[:,:,2] # 獲取影像的R通道
cv2.imshow("B通道",b)
cv2.imshow("G通道",g)
cv2.imshow("R通道",r)
cv2.waitKey()
cv2.destroyAllWindows()
![]()
![]()
2.2通過函式拆分
函式
cv2.split()能夠拆分彩色影像的通道,
陳述句b,g,r=cv2.split(img)可以獲得彩色影像的B 通道影像 b、G 通道影像 g 和 R 通道影像 r,與下面陳述句是等價的
b=cv2.split(a)[0]
g=cv2.split(a)[1]
r=cv2.split(a)[2]
如下程式的運行結果與通過索引拆分是一樣的
import cv2
lena=cv2.imread("lena_color.jpg")
cv2.imshow("lena彩色原圖",lena)
b,g,r=cv2.split(lena)
cv2.imshow("B通道",b)
cv2.imshow("G通道",g)
cv2.imshow("R通道",r)
cv2.waitKey()
cv2.destroyAllWindows()
3.通道合并
??通道合并是通道拆分的逆程序,可以通過合并通道將三個通道的灰度影像合成一幅彩色影像,函式
cv2.merge()可以實作影像通道的合并,例如有 B 通道影像 b、G 通道影像 g 和 R 通道影像 r,使用函式cv2.merge()可以將這三個通道合并為一幅 BGR 的三通道彩色影像,實作的陳述句為:bgr=cv2.merge([b,g,r])
import cv2
lena=cv2.imread("lena_color.jpg")
b,g,r=cv2.split(lena) # 對lena彩色原圖進行通道拆分
bgr=cv2.merge([b,g,r]) # 對通道按照BGR的順序合并生成影像bgr
brg=cv2.merge([b,r,g]) # 對通道按照BRG的順序合并生成影像brg
rgb=cv2.merge([r,g,b]) # 對通道按照RGB的順序合并生成影像rgb
cv2.imshow("bgr",bgr)
cv2.imshow("brg",brg)
cv2.imshow("rgb",rgb)
cv2.waitKey()
cv2.destroyAllWindows()
從輸出結果可以知道:改變通道順序后,影像顯示效果會發生變化
![]()
![]()
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/312246.html
標籤:其他



