1

Я написал следующий код, чтобы обнаружить и нарисовать контуры:Как обнаружить и нарисовать контуры с помощью OpenCV в Python?

img = cv2.imread('test2.tif'); 

if not img is None: 
    imgray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY); 
    ret,thresh = cv2.threshold(imgray,127,255,0); 
    contours,hierarchy = cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE); 

    #draw a three pixel wide outline 
    cv2.drawContours(img,contours,-1,(0,255,0),3); 

А вот ошибка я получил:

Traceback (most recent call last): File "C:/Users/R.K.singh/Desktop/Image processing/intro-to-contours.py", line 10, in contours,hierarchy = cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE); ValueError: too many values to unpack

Что не так? Я использую Python 2.7 и OpenCV 3.1.0

ответ

2

Чтобы подчеркнуть точку зрения Сельчука, синтаксис, связанный с OpenCV 3.x, немного изменился. Он имеет другое возвращаемое значение, когда дело доходит до cv2.findContours. Он возвращает следующее: image, contours, hierarchy.

Предыдущие версии OpenCV, однако, возвращаются только contours, hierarchy. Они не возвращают изображение.

2

Измените следующую строку. Вы используете OpenCV 3.1.0, но вы кодировали с использованием OpenCV 2.7.x.

(cnts, _) = cv2.findContours(thresh.copy(), cv2.RETR_TREE, 
     cv2.CHAIN_APPROX_SIMPLE) 

Также этот link поможет вам.

+0

Что такое обложка? Он не определен в моем коде. @ selçuk-İlhan-aydi – singhuist

+1

Я отредактировал код –

Смежные вопросы