通道操作

通道拆分

通过索引拆分

可以通过如下语句分别提取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()

运行结果如下:
通道操作_第1张图片

你可能感兴趣的:(python图像处理)