OpenCV错误:使用COLOR_BGR2GRAY函数时断言失败

时间:2016-12-09 02:07:59

标签: python opencv numpy

我对opencv有一个奇怪的问题。我在使用jupyter笔记本时没有问题,但在尝试运行这个Sublime时也没有问题。

错误是:OpenCV错误:cvtColor中的断言失败(深度== CV_8U ||深度== CV_16U ||深度== CV_32F),文件/ Users / jenkins / miniconda / 1 / x64 / conda-bld / work /opencv-3.1.0/modules/imgproc/src/color.cpp,第7935行

import numpy as np 
import cv2

img = [[[150,160,170], [150,32, 199], [145, 212, 234], [145, 212, 234]], 
       [[150,190,170], [150,32, 199], [145, 212, 234], [145, 212, 234]],
       [[150,160,170], [150,32, 199], [145, 212, 234], [145, 212, 234]],
       [[150,160,170], [150,32, 199], [145, 212, 234], [145, 212, 234]]]

img = np.array(img)

def grayscale(x):
    # plt.imshow(gray, cmap='gray')to show on screen
    # turns dim from (32,32,3) to (32,32)
    return cv2.cvtColor(x, cv2.COLOR_BGR2GRAY)

img2 = grayscale(img)

1 个答案:

答案 0 :(得分:16)

创建数组时需要指定数据类型。

当我在此处尝试此代码并检查dtype的{​​{1}}时,我会看到以下内容:

img

这与cv2.cvtColor的要求不符。

初始化图片的值范围似乎为0-255,与数据类型>>> img.dtype dtype('int32') 相对应。

所以,只需做

uint8