【问题标题】:Unable to split opencv image to RGB无法将 opencv 图像拆分为 RGB
【发布时间】:2019-11-28 19:10:38
【问题描述】:

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

【问题讨论】:

    标签: python opencv imread


    【解决方案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)
    

    【讨论】:

      【解决方案2】:

      在分割时,每个图像都是一个单通道图像。由于它们是单通道图像,当您使用cv2.imshow(g) 时,它们看起来像灰度图像。但请放心,渠道已正确拆分。

      通常,在 BGR 图像中,每个通道看起来几乎与 BGR 图像完全相同,这可能是您感到困惑的地方。

      【讨论】:

        猜你喜欢
        • 2017-05-17
        • 2020-08-13
        • 2011-03-02
        • 1970-01-01
        • 2015-08-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多