2016-01-12 2 views
2

Я пытаюсь запустить этот код, и он выдаст сообщение об ошибке:cv2.COLOR_BGR2Lab не работает, но cv2.COLOR_BGR2GRAY работает

import cv2 

import numpy as np 

img=cv2.imread('image1.jpg',cv2.IMREAD_COLOR) 
hsl = cv2.cvtColor(img,cv2.COLOR_BGR2Lab) 
cv2.imshow('image',hsl) 
cv2.imwrite('hsl.jpg',hsl) 
cv2.waitKey(0) 
cv2.destroyAllWindows() 

Исключение:

Traceback (most recent call last): 
File "ques3.py", line 7, in <module> 
hsl = cv2.cvtColor(img,cv2.COLOR_BGR2Lab) 
AttributeError: 'module' object has no attribute 'COLOR_BGR2Lab' 

Если изменить cv2.COLOR_BGR2Lab до cv2.COLOR_BGR2GRAY, он работает успешно.

Почему это происходит?

ответ

1

Примечание: У меня нет установленного OpenCV.

ошибка (как последняя строка за исключением брошенной указывает) является то, что cv2питон экспорта модуля нет постоянной не назван COLOR_BGR2Lab. Согласно http://nullege.com/codes/search/cv2.THRESH_BINARY, существует константа с именем COLOR_BGR2LAB (python чувствительна к регистру).

В любом случае, если вы хотите увидеть имена, что модуль экспорта (в данном случае для cv2) вы могли бы использовать:

import cv2 
print(dir(cv2)) 
+0

но есть также cv2.COLOR_BGR2Lab в HTTP: // документы. opencv.org/master/d7/d1b/group__imgproc__misc.html#gga4e0972be5de079fed4e3a10e24ef5ef0a860b72b4741c431e81340fafef5eca24&gsc.tab=0 Что это за малая лаборатория –

+0

Я вижу. Глядя на http://www.pythonbackend.com/topic/1361940473, кажется, что в 'cv2' константные имена изменились с' cv'. Во всяком случае, только имя, присутствующее в списке, возвращаемом функцией 'dir' (как я разместил код), может быть успешно использовано, например, как:' cv2'._somename_. Кроме того, упомянутый документ относится к _C_. Модуль _python_ может отличаться. BTW: модуль 'cv2' написан на питоне или является динамическим? Вы можете проверить это, посмотрев расширение файла: 'print (cv2)' (после импорта 'cv2'). – CristiFati