无法将OpenCV图像拆分为RGB

时间:2019-07-19 19:09:45

标签: python opencv imread

我正在尝试将图像拆分为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。我什至用不同的图像尝试过。

2 个答案:

答案 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)