通道操作

通道拆分

通過索引拆分

可以通過如下語句分別提取B通道、G通道、R通道的值
b = cat[:,:,0]
g = cat[:,:,1]
r = cat[:,:,2]
舉例:

import cv2
import numpy as np

cat = cv2.imread('1.jpg', cv2.IMREAD_REDUCED_COLOR_4)
cv2.imshow('原圖'.encode("gbk").decode(errors="ignore"),cat)
b = cat[:,:,0]
g = cat[:,:,1]
r = cat[:,:,2]
cv2.imshow('B通道圖像'.encode("gbk").decode(errors="ignore"),b)
cv2.imshow('G通道圖像'.encode("gbk").decode(errors="ignore"),g)
cv2.imshow('R通道圖像'.encode("gbk").decode(errors="ignore"),r)
cat[:,:,0] = 0
cv2.imshow('B通道值置0後圖像'.encode("gbk").decode(errors="ignore"),cat)
cat[:,:,1] = 0
cv2.imshow('B、G通道值置0後圖像'.encode("gbk").decode(errors="ignore"),cat)
cv2.waitKey()
cv2.destroyAllWindows()

解釋:在OpenCV-Python包中,imshow函數的窗口標題是gbk編碼,而Python3默認UTF-8編碼。因而窗口標題包含中文時,會顯示亂碼。

解決這個問題,最直接就是從標題的編碼入手:

string.encode("gbk").decode(errors="ignore")

運行結果:
在這裏插入圖片描述

通過函數拆分

函數cv2.split()能夠拆分圖像通道
舉例:

import cv2
import numpy as np

cat = cv2.imread('1.jpg', cv2.IMREAD_REDUCED_COLOR_4)
b,g,r = cv2.split(cat)
cv2.imshow('B',b)
cv2.imshow('G',g)
cv2.imshow('R',r)
cv2.waitKey()
cv2.destroyAllWindows()

運行結果如下:
在這裏插入圖片描述

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