在opencv python中无法读取彩色图像

时间:2015-09-06 05:36:54

标签: python-2.7 opencv

我刚开始在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:需要多于1个值才能   解压"

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

2 个答案:

答案 0 :(得分:1)

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

并且b,g,r = cv2.split(img)引发了错误,因为此时img是只有一个通道的灰度图像,并且无法将1通道图像分割为3个相应的通道。 / 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()

答案 1 :(得分:0)

尝试此解决方案

读取图像并将其转换为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)