小强学Python+OpenCV之-1.4.5通道拆分(cv2.split)及合并(cv2.merge)
来源:互联网 发布:国企 股东是谁 知乎 编辑:程序博客网 时间:2024/06/16 22:46
本篇来看一下opencv的两个函数通道cv2.split和通道cv2.merge
通道拆分cv2.split
# 导入库import numpy as npimport argparseimport cv2 # 构造参数解析器ap = argparse.ArgumentParser()ap.add_argument("-i", "--image", required=True, help="Path to the image")args = vars(ap.parse_args()) # 加载图像image = cv2.imread(args["image"])# 通道分离,注意顺序BGR不是RGB(B, G, R) = cv2.split(image) # 显示各个分离出的通道cv2.imshow("Red", R)cv2.imshow("Green", G)cv2.imshow("Blue", B)cv2.waitKey(0)
执行脚本,得到下面三幅图像:
蓝色通道:
绿色通道:
红色通道:
奇怪,为什么分离出的图像颜色都是灰色的呢?不应该是蓝色通道是蓝色,绿色通道是绿色,红色通道是红色吗?
原来,cv2.split函数分离出的B、G、R是单通道图像,我们可以增加下面两行代码来验证一下:
print "image shape:",image.shapeprint "single channal shape:",R.shape
得到结果如下:
image shape: (370, 690, 3)single channal shape: (370, 690)
结果说明,原图(彩色图像)是370*690的三通道图像。而经过cv2.split之后,每个通道是370*690的单通道图像。
通道合并cv2.merge
其实,我最开始想像的cv2.split图像是如下的样子:
蓝色通道(其它通道分量值为0):
绿色通道(其它通道分量值为0):
红色通道(其它通道分量值为0):
原来的上面的图像是三通道图像,只是在cv2.split分离出的图像基础上,扩展另外两个通道,但另外两个通道值为0,而得到上面的这样的图像。代码如下:
# 生成一个值为0的单通道数组zeros = np.zeros(image.shape[:2], dtype = "uint8")# 分别扩展B、G、R成为三通道。另外两个通道用上面的值为0的数组填充cv2.imshow("Blue", cv2.merge([B, zeros, zeros]))cv2.imshow("Green", cv2.merge([zeros, G, zeros]))cv2.imshow("Red", cv2.merge([zeros, zeros, R]))cv2.waitKey(0)
总结
cv2.split函数分离得到各个通道的灰度值(单通道图像)。cv2.merge函数是合并单通道成多通道(不能合并多个多通道图像)。
阅读全文
2 0
- 小强学Python+OpenCV之-1.4.5通道拆分(cv2.split)及合并(cv2.merge)
- 小强学Python+OpenCV之-1.4.5通道拆分(cv2.split)及合并(cv2.merge)
- Python-OpenCV单通道加噪(cv2.split通道分离+skimage+cv2.merge通道合并)
- opencv通道拆分与合并:split和merge
- python opencv cv2.
- 走进Python-OpenCV:cv2.imread(),cv2.imshow(),cv2.imwrite()
- opencv Mat 多通道拆分Split和组合Merge
- python cv2.imread()、cv2.imshow()、cv2.imwrite()
- cv2
- Opencv Python版cv2读取视频显示
- python opencv cv2 to process video
- (cv2.CV_LOAD_IMAGE_GRAYSCALE)Python调用opencv
- python opencv cv2 基础操作1
- python opencv cv2 基础操作2
- python opencv cv2 基础操作3 CascadeClassifier
- 25 python-opencv cv2.findcontours函数
- python中opencv,cv2.pyd下载
- python-opencv中的cv2.inRange函数
- SSM框架——使用MyBatis Generator自动创建代码
- TensorFlow (RNN)深度学习下 双向LSTM(BiLSTM)+CRF 实现 sequence labeling 双向LSTM+CRF跑序列标注问题
- Catch That Cow
- python cookbook学习笔记十五:回调函数(1)
- 什么叫灰度图
- 小强学Python+OpenCV之-1.4.5通道拆分(cv2.split)及合并(cv2.merge)
- 如何获取Button的背景颜色
- PHP 简记
- R语言中样本平衡的几种方法
- Log4j配置详解
- Day04-JavaScript02
- 内部排序—冒泡排序
- 【Python】二、Numpy——《用Python做科学计算》
- JAVA: 为什么要使用"抽象类"? 使用"抽象类"有什么好处?