2016-12-09 2 views
2

У меня возникла странная проблема с opencv. У меня нет проблем при работе в ноутбуке jupyter, но при попытке запустить это Sublime.Ошибка OpenCV: сбой при использовании функции COLOR_BGR2GRAY

Ошибка: Ошибка OpenCV: утверждение не выполнено (глубина == CV_8U || depth == CV_16U || depth == CV_32F) в cvtColor, файл/Пользователи/jenkins/miniconda/1/x64/conda-bld/работа/OpenCV-3.1.0/модули/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) 

ответ

5

Вам необходимо указать тип данных при создании массива.

Когда я пытаюсь этот код здесь, и проверить dtype из img, я вижу следующее:

>>> img.dtype 
dtype('int32') 

Это не соответствует требованиям cv2.cvtColor.

Диапазон значений, которые вы инициализируете, с изображением, появляется в 0-255, что соответствует типу данных uint8.

Так, просто сделать

img = np.array(img, dtype=np.uint8) 
Смежные вопросы