Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

python: want to display red channel only in opencv

I am beginner in image processing. I am showing image in many color space the below code show the image in the 3 channels R G B however the image displayed in the gray layout. i need to display three images one with red channel as red image, another as blue, and the last one as green. thanks in advance.

# 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

like image 933
dodo Avatar asked Jun 14 '17 20:06

dodo


1 Answers

You can just make a copy of the original image and set some channels to 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) 
like image 108
Pedro Boechat Avatar answered Sep 22 '22 22:09

Pedro Boechat