1、opencv方法说明:
opencv读取图片默认是BGR格式,通道分割结果应该按照顺序用b,g,r去接受;
b,g,r=cv.split(img)
opencv也提供了一种方法,可以将分割BGR通道进行组合,例如合并成为我们常用的RGB格式;
rgb_img=cv.merge((r,g,b))
2、矩阵法通道分割:
- 提取
red
通道
img=cv.imread("../sources/animal.jpg", cv.IMREAD_COLOR)
img[:, :, 0] = 0 #(b,g,r) =>(0,g,r)
img[:, :, 1] = 0 #(0,g,r) =>(0,0,r)
- 提取
green
通道
img=cv.imread("../sources/animal.jpg", cv.IMREAD_COLOR)
img[:, :, 0] = 0 #(b,g,r) =>(0,g,r)
img[:, :, 2] = 0 #(0,g,r) =>(0,g,0)
- 提取
blue
通道
img=cv.imread("../sources/animal.jpg", cv.IMREAD_COLOR)
img[:, :, 1] = 0 #(b,g,r) =>(b,0,r)
img[:, :, 2] = 0 #(b,0,r)=>(b,0,0)
3、BGR通道转RGB
opencv库默认通道为BGR,matplotlib.pyplot库的默认通道为RGB,本案例实线一个通道格式转换,以便不同第三方库直接可以互相调用。
import cv2 as cv
import matplotlib.pyplot as plt
def show_image(name,img):
"""
展示图片,按任意键退出
:param name: 图片名称 <class 'string'>
:param img: 图片矩阵 <class 'numpy.ndarray'>
:return:
"""
cv.imshow(name,img) #展示图片
cv.waitKey(0)#等待时间,毫秒级,0表示任意键终止
cv.destroyWindow(name)
if __name__ == '__main__':
img=cv.imread("../sources/animal.jpg", cv.IMREAD_COLOR)
b,g,r=cv.split(img)
rgb_img=cv.merge((r,g,b))
# 展示图片,按任意键退出
# plt.imshow(img)
plt.imshow(rgb_img)
plt.show()
案例运行结果如下:plt.imshow(img)
和 plt.imshow(rgb_img)
|
|
|
|
|
|