深圳公司网站推广,英文站网站源码,更换域名wordpress,网站关键词做排名不分文章目录#xff1a;『youcans 的 OpenCV 例程300篇 - 总目录』 【OpenCV 例程300篇】11. 图像通道的拆分#xff08;cv2.split#xff09; 函数 cv2.split() 将 3 通道 BGR 彩色图像分离为 B、G、R 单通道图像。
函数说明#xff1a; cv2.split(img[, mv]) - retval …文章目录『youcans 的 OpenCV 例程300篇 - 总目录』 【OpenCV 例程300篇】11. 图像通道的拆分cv2.split 函数 cv2.split() 将 3 通道 BGR 彩色图像分离为 B、G、R 单通道图像。
函数说明 cv2.split(img[, mv]) - retval # 图像拆分为 BGR 通道 函数 cv2.split() 传入一个图像数组并将图像拆分为 B/G/R 三个通道。
参数说明
img图像数据nparray 多维数组mv指定的分拆通道可选
注意事项
对于 openCV 使用的 BGR 格式图像返回的分拆通道的次序为 B、G、R 通道。BGR 彩色图像的数据形状为 (width, height, channels3)返回的 B/G/R 通道的数据形状为 (width, height)不能按照 BGR 彩色图像直接显示。如果直接用 imshow 显示返回的单通道对象将被视为 (width, height) 形状的灰度图像显示。如果要正确显示某一颜色分量需要增加另外两个通道值置 0转换为 BGR 三通道格式再用 imshow 才能显示为拆分通道的颜色。cv2.split() 操作复杂耗时可以直接使用 NumPy 切片得到分离通道。
基本例程 # 1.19 图像拆分通道img1 cv2.imread(../images/imgB1.jpg, flags1) # flags1 读取彩色图像(BGR)cv2.imshow(BGR, img1) # BGR 图像# BGR 通道拆分bImg, gImg, rImg cv2.split(img1) # 拆分为 BGR 独立通道cv2.imshow(rImg, rImg) # 直接显示红色分量 rImg 显示为灰度图像# 将单通道扩展为三通道imgZeros np.zeros_like(img1) # 创建与 img1 相同形状的黑色图像imgZeros[:,:,2] rImg # 在黑色图像模板添加红色分量 rImgcv2.imshow(channel R, imgZeros) # 扩展为 BGR 通道print(img1.shape, rImg.shape, imgZeros.shape)cv2.waitKey(0)cv2.destroyAllWindows() # 释放所有窗口本例程的运行结果如下
(512, 512, 3) (512, 512) (512, 512, 3)运行结果表明
彩色图像 img1 的形状为 (512, 512, 3)拆分的 R 通道 rImg 的形状为 (512, 512)。用 imshow 显示 rImg将被视为 (512, 512) 形状的灰度图像显示不能显示为红色通道。对 rImg 增加 B、G 两个通道值置 0转换为 BGR格式再用 imshow 才能显示红色通道的颜色。 扩展例程 使用 NumPy 切片得到分离通道更为简便而且运行速度比 cv2.split 更快。 # 1.20 图像拆分通道 (Numpy切片)img1 cv2.imread(../images/imgB1.jpg, flags1) # flags1 读取彩色图像(BGR)# 获取 B 通道bImg img1.copy() # 获取 BGRbImg[:, :, 1] 0 # G0bImg[:, :, 2] 0 # R0# 获取 G 通道gImg img1.copy() # 获取 BGRgImg[:, :, 0] 0 # B0gImg[:, :, 2] 0 # R0# 获取 R 通道rImg img1.copy() # 获取 BGRrImg[:, :, 0] 0 # B0rImg[:, :, 1] 0 # G0# 消除 B 通道grImg img1.copy() # 获取 BGRgrImg[:, :, 0] 0 # B0plt.subplot(221), plt.title(1. B channel), plt.axis(off)bImg cv2.cvtColor(bImg, cv2.COLOR_BGR2RGB) # 图片格式转换BGR(OpenCV) - RGB(PyQt5)plt.imshow(bImg) # matplotlib 显示 channel Bplt.subplot(222), plt.title(2. G channel), plt.axis(off)gImg cv2.cvtColor(gImg, cv2.COLOR_BGR2RGB)plt.imshow(gImg) # matplotlib 显示 channel Gplt.subplot(223), plt.title(3. R channel), plt.axis(off)rImg cv2.cvtColor(rImg, cv2.COLOR_BGR2RGB)plt.imshow(rImg) # matplotlib 显示 channel Rplt.subplot(224), plt.title(4. GR channel), plt.axis(off)grImg cv2.cvtColor(grImg, cv2.COLOR_BGR2RGB)plt.imshow(grImg) # matplotlib 显示 channel GRplt.show()本例程的运行结果如下GR channel 是消除 B通道保留 G/R 通道的图像 本节完 【第1章图像的基本操作】 07. 图像的创建np.zeros 08. 图像的复制np.copy 10. 图像的拼接np.hstack 11. 图像通道的拆分cv2.split 12. 图像通道的合并cv2.merge 版权声明 youcansxupt 原创作品转载必须标注原文链接(https://blog.csdn.net/youcans/article/details/125112487) Copyright 2022 youcans, XUPT Crated2021-11-18 欢迎关注专栏 『youcans 的 OpenCV 例程 300 篇』