python(+opencv2+numpy)对彩色图像的RGB通道提取、合成、显示并计算灰度图像

一、image中RGB通道提取,直接上代码很简单

import cv2

Import sys

import numpy as np

image = cv2.imread(sys.argv[1], cv2.IMREAD_COLOR)

b = image[:, :, 0]

g = image[:, :, 1]

r = image[:, :, 2]

也可以直接用opencv的split函数

(b, g, r) = cv2.split(image)

 

上面得到r g b是一维矩阵,要是直接cv2.imshow(“b”,b)的话,显示的是一张灰度图(值为0~255),如果要显示对应的颜色通道,还需要把另外的两个通道补0,如何做呢?

(1)可以使用cv2的merge函数,比如单独显示b通道,可以这样补:

image_b = cv2.merge([b, np.zeros(b.shape, np.uint8), np.zeros(b.shape, np.uint8)])

其中np.zeros(b.shape,np.uint8)表示创建一个和b矩阵维度一样,每个数据初始值的类型为uint8并且值为0的矩阵。

(2)还可以使用numpy中提供的dstack函数来实现:

image_b = np.dstack((b, np.zeros(b.shape, np.uint8), np.zeros(b.shape, np.uint8)))

numpy提供了很多矩阵合并的计算函数。比如:

np.append()

np.concaten

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值