python: хотите отображать красный канал только в opencv
Я новичок в обработке изображений. Я показываю изображение во многих цветовых пространствах приведенный ниже код показывает изображение в 3 каналах R G B однако изображение отображается в сером макете. мне нужно отобразить три изображения: одно с красным каналом как красное изображение, другое как синее, и последнее как зеленое. Спасибо заранее.
# 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)
Синее изображение, отображаемое в данный момент
1 ответ:
Вы можете просто сделать копию исходного изображения и установить некоторые каналы равными 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)
Comments