【问题标题】:cannot read in image in colour in opencv python无法在opencv python中读取彩色图像
【发布时间】:2019-08-02 14:51:51
【问题描述】:

我刚刚开始在 windows (PyCharm IDE) 中使用 Python 使用 Opencv。 我试图读取彩色图像。但它以灰度显示。所以我尝试将其转换如下:

import cv2
img = cv2.imread('C:\Ai.jpg', 0)
b,g,r = cv2.split(img)
rgb = cv2.merge([r,g,b])
cv2.imshow('image', img)
cv2.imshow('rgb image',rgb)
cv2.waitKey(0)
cv2.destroyAllWindows()

但我收到一个错误:

"b, g, r = cv2.split(img) ValueError: need more than 1 value to 解压”

你们能帮帮我吗? 提前致谢。

【问题讨论】:

    标签: python-2.7 opencv


    【解决方案1】:

    你的代码img = cv2.imread('C:\Ai.jpg', 0)的第二行有问题,根据documentation0的值对应cv2.IMREAD_GRAYSCALE,这就是你得到灰度图像的原因。如果您想在 RGB 颜色空间中加载它,您可能需要将其更改为 1;如果您想包含任何其他通道,例如与图像一起编码的 alpha 通道,您可能需要将其更改为 -1

    b,g,r = cv2.split(img) 引发了一个错误,因为当时img 是一张只有一个通道的灰度图像,不可能将一个1 通道图像拆分为3 个相应的通道。

    您的最终 sn-p 可能如下所示:

    import cv2
    # Reading the image in RGB mode
    img = cv2.imread('C:\Ai.jpg', 1)
    
    # No need of following lines:
    # b,g,r = cv2.split(img)
    # rgb = cv2.merge([r,g,b])
    # cv2.imshow('rgb image',rgb)
    
    # Displaying the image
    cv2.imshow('image', img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    

    【讨论】:

    • 非常感谢您的解释!我现在明白了!
    【解决方案2】:

    试试这个解决方案

    读取图像并将其转换为 RGB 格式:

    如果您有彩色图像并使用 OpenCV 读取它。首先,转换成RGB颜色格式

    image = cv2.imread(C:\Ai.jpg')                 #cv2 reading image in BGR
    image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) #convert it into RGB format
    

    要显示它,我们可以使用 cv2.imshow、matplotlib 或 PIL,如下所示

    import matplotlib.pyplot as plt
    %matplotlib inline
    from PIL import Image
    

    现在使用 matplotlib 打印:

    plt.imshow(image)
    

    使用 PIL 打印

    Image.fromarray(image)
    

    【讨论】:

      猜你喜欢
      • 2015-11-07
      • 1970-01-01
      • 2018-07-17
      • 1970-01-01
      • 2016-01-06
      • 2010-12-04
      • 2019-04-16
      • 2017-11-16
      • 1970-01-01
      相关资源
      最近更新 更多