web-dev-qa-db-ja.com

python:opencvでのみ赤チャネルを表示したい

私は画像処理の初心者です。私は多くの色空間で画像を表示していますが、以下のコードは3つのチャンネルR G Bの画像を示していますが、画像は灰色のレイアウトで表示されています。 3つの画像を表示する必要があります。1つは赤のチャンネル、もう1つは青、最後のチャンネルは緑です。前もって感謝します。

# 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)

現在表示されている青い画像

この画像のように青いチャンネルを表示する必要があります

13
Abeer Yosef

元の画像のコピーを作成し、いくつかのチャンネルを0に設定するだけです。

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)
16
Pedro Boechat