首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >python:希望仅在opencv中显示红色通道

python:希望仅在opencv中显示红色通道
EN

Stack Overflow用户
提问于 2017-06-15 04:25:02
回答 2查看 63K关注 0票数 28

我是图像处理的初学者。我在许多颜色空间中显示图像,下面的代码显示了3个通道R、G、B中的图像,但是显示在灰色布局中的图像。我需要显示三个图像,一个红色通道为红色图像,另一个为蓝色,最后一个为绿色。提前谢谢。

代码语言:javascript
复制
# cspace.py
import cv2
import numpy as np

image = cv2.imread('download.jpg')

# Convert BGR to HSV
hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
hsl = cv2.cvtColor(image, cv2.COLOR_BGR2HLS) # equal to HSL
luv = cv2.cvtColor(image, cv2.COLOR_BGR2LUV)


#RGB - Blue
cv2.imshow('B-RGB.jpg',image[:, :, 0])
cv2.imwrite('B-RGB.jpg',image[:, :, 0])

# RGB - Green
cv2.imshow('G-RGB',image[:, :, 1])
cv2.imwrite('G-RGB.jpg',image[:, :, 1])

# RGB Red
cv2.imshow('R-RGB',image[:, :, 2])
cv2.imwrite('R-RGB.jpg',image[:, :, 2])


cv2.waitKey(0)

Blue image as displayed currently

i need to display blue channel like this image

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-06-15 05:08:15

您可以只复制原始图像,并将某些通道设置为0。

代码语言:javascript
复制
import cv2

image = cv2.imread('download.jpg')

b = image.copy()
# set green and red channels to 0
b[:, :, 1] = 0
b[:, :, 2] = 0


g = image.copy()
# set blue and red channels to 0
g[:, :, 0] = 0
g[:, :, 2] = 0

r = image.copy()
# set blue and green channels to 0
r[:, :, 0] = 0
r[:, :, 1] = 0


# RGB - Blue
cv2.imshow('B-RGB', b)

# RGB - Green
cv2.imshow('G-RGB', g)

# RGB - Red
cv2.imshow('R-RGB', r)

cv2.waitKey(0)
票数 43
EN

Stack Overflow用户

发布于 2019-12-02 13:33:15

代码语言:javascript
复制
import cv2
import numpy as np

channel_initials = list('BGR')

image = cv2.imread('download.jpg')

for channel_index in range(3):
    channel = np.zeros(shape=image.shape, dtype=np.uint8)
    channel[:,:,channel_index] = image[:,:,channel_index]
    cv2.imshow(f'{channel_initials[channel_index]}-RGB', channel)
cv2.waitKey(0)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44554125

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档