繁体   English   中英

如何从RGB图像中提取单个通道

[英]How to extract individual channels from an RGB image

我发现opencv文档使用cv2.split(img)命令从RGB图像中提取单个通道,但它并没有真正返回所选通道的图像。 它们看起来都像灰度。 有人能帮我吗? 我附上照片。

b = img[:,:,0]
g = img[:,:,1]
r = img[:,:,2]

or

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

起始图像= 在此输入图像描述 红色通道提取= 在此输入图像描述

这是一个正确的提取? 全红色通道在哪里 - img?

在任何一种方法中,您都要创建一个灰度图像,因此绘制它不会显示从中派生出来的通道的颜色。

您可以使用色彩图向您显示的图像添加颜色,也可以通过将其他通道设置为0将其转换为RGB图像。

plt.imshow(r, cmap='Reds')

要么

img = np.stack([r, np.zeros_like(r), np.zeros_like(r)], axis=-1)
plt.imshow(img)

提取的红色通道可能看起来像灰度图像,但它是正确的。 它只是一个2D数组,其值在[0,255]范围内。 要显示特定通道,您需要将其他通道设置为零。 因此,要显示红色通道,需要将蓝色和绿色通道设置为零。

import cv2

img = cv2.imread('1.jpg')

# Set blue and green channels to 0
img[:,:,0] = 0
img[:,:,1] = 0

cv2.imshow('red_img', img)
cv2.waitKey()

在此输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM