我正在尝试将图像拆分为B,G,R
,但拆分后,每个B G&R都具有灰度图像。
import cv2
import numpy as np
image = cv2.imread('/path/image.jpg') #I have tried using CV_LOAD_IMAGE_COLOR flag as well as 1
#however,image is read as color image. It is not a grayscale image
b,g,r = cv2.split(image)
#[b,g,r]=np.dsplit(image,image.shape[-1])
#b,g,r = cv2.split(image)
#b = image[:,:,0]
#g = image[:,:,1]
#r = image[:,:,2]
#none of the above worked
cv2.imshow("green",g)
cv2.waitKey(0)
cv2.destroyAllWindows()
请帮助我将图像拆分为BGR。我什至用不同的图像尝试过。
答案 0 :(得分:1)
分割时,每个图像都是一个单通道图像。由于它们是单通道图像,因此当您使用cv2.imshow(g)
时,它们看起来像是灰度图像。但请放心,渠道已正确分割。
通常,在BGR图片中,每个频道看上去几乎都与BGR图片完全一样,这可能会让您感到困惑。
答案 1 :(得分:1)
您正在向imshow
发送一个频道。绿色的。这将显示为灰度。您想要做的是发送红色和蓝色通道设置为零的图像,以使其“看到”为绿色。
分割时您做对了,有红色,绿色和蓝色通道。显示代码使您感到困惑,并将绿色通道显示为灰度。
import numpy as np
import cv2
image = np.random.rand(200, 200, 3)
b, g, r = cv2.split(image)
cv2.imshow('green', g)
cv2.waitKey(0)
black = np.zeros((200, 200, 3))
black[:, :, 1] = g # Set only green channel
cv2.imshow('green', black)
cv2.waitKey(0)