一般方法对于图像BGR通道的获取,我们使用索引的方法是这样的:利用

简介: 一般方法对于图像BGR通道的获取,我们使用索引的方法是这样的:利用数组切片方式实现图层拆分import cv2img = cv2.imread('test.jp

我们知道,使用OpenCV在获取一幅BGR图像的信息时(shape属性),会同时获得一幅图像的RGB图层数。

那么,问题来了,如何将这些图像拆分和合并呢?

两种图层拆分方法今天,我们使用OpenCV的一组函数来实现相同的功能,并对比两种方案的优劣。

一般方法对于图像BGR通道的获取,我们使用索引的方法是这样的:利用数组切片方式实现图层拆分import cv2img = cv2.imread('test.jpg')b_img = img[:, :, 0] # B通道g_img = img[:, :, 1] # G通道r_img = img[:, :, 2] # R通道这样选取的是整个图片的各个通道的颜色数值。

别忘了内置方法哦是肯定的,我们看下OpenCV为我们封装的方法吧。

cv2.split(img)实现功能:传入一个图像数组,并将图像拆分为BGR三个通道的图像,返回值是BGR三个通道图像的元组cv2.merge((b,g,r))实现功能:分别传入BGR三个通道的图像组成的元组,将其三个图像合并为一个BGR三通道图像我们使用代码来验证下这两个函数实现的效果吧!

import cv2img = cv2.imread('test.jpg')b, g, r = cv2.split(img)# 拆分后显示cv2.imshow('b', b)cv2.imshow('g', g)cv2.imshow('r', r)# 合并img2 = cv2.merge(b, g, r)cv2.imshow('Merge', img2)# 响应while True:key = cv2.waitKey(0)# esc退出if key == 27: break# 关闭全部窗口cv2.destroyAllWindows()上述代码可以准确地提取图片GR通道值,并进行合并。

现在我们定义两个函数,分别测试下函数耗时,比较两个方案的优劣,具体代码如下所示。

测试两种方案耗时我们来看下测试结果,如下图所示。

耗时测试结果因此,我们在使用OpenCV进行图层拆分时,除非必须使用,否则,首选拆分图层还是要使用数组切片拆分的方法。

好了,今天就到这里了,今天带大家了解了一下对于图层拆分的两种可选方案,并且分析了两种方案的性能优劣。

建议在使用OpenCV进行图像的图层拆分时,首选数组切片拆分的方案。


以上是文章"

一般方法对于图像BGR通道的获取,我们使用索引的方法是这样的:利用

"的内容,欢迎阅读超越科技网的其它文章