灰度到RGB转换

时间:2019-03-28 13:13:37

标签: python opencv rgb grayscale

如何解决此错误?

import matplotlib, cv2
import numpy as np
import matplotlib.pyplot as plt

img = cv2.imread('C:/Users/xxx/Desktop/image.jpg') 
img = np.array(img, dtype=np.uint8)
plt.imshow(cv2.cvtColor(img, cv2.COLOR_GRAY2RGB))
  

错误:OpenCV(4.0.0)   c:\ projects \ opencv-python \ opencv \ modules \ imgproc \ src \ color.hpp:259:   错误:函数'__cdecl中的(-2:未指定错误)   cv :: CvtHelper,结构cv :: Set <3,4,-1>,结构   cv :: Set <0,2,5>,2> :: CvtHelper(const class cv :: _ InputArray&,const class   cv :: _ OutputArray&,int)'

     
    

输入图像中无效的通道数:         'VScn :: contains(scn)'     哪里         “ scn”是3

  

2 个答案:

答案 0 :(得分:1)

img = cv2.imread(filename[, flags])

当标志> 0时返回三通道彩色图像

当flag = 0时返回灰色图像

以原始加载的文件的形式返回图像。

出现错误是因为您没有分配它以返回灰色图像。频道号不匹配。

使用img = cv2.imread(filename, 0)确保img是1通道图像。

答案 1 :(得分:0)

您用imread加载的图像包含三个BGR格式的通道。但是,cv2.cvtColor期望图像只有一个一个通道,因为您传递了参数cv2.COLOR_GRAY2RGB(灰度图像只有一个通道)

如果您需要RGB,请考虑使用:

cv2.cvtColor(img, cv2.COLOR_BGR2RGB)