Как обнаружить и нарисовать контуры с помощью 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 (последний вызов был последним): файл "C:/Users/RKsingh/Desktop/ Обработка изображений /intro-to-contours.py", строка 10, в контурах, иерархия = cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE); ValueError: слишком много значений для распаковки
Что случилось? Я использую Python 2.7 и OpenCV 3.1.0
2 ответа
Чтобы подчеркнуть точку зрения Сельчука, синтаксис, связанный с OpenCV 3.x, немного изменился. Он имеет другое возвращаемое значение, когда дело доходит до cv2.findContours
, Возвращает следующее image, contours, hierarchy
,
Предыдущие версии OpenCV, однако, возвращают только contours, hierarchy
, Они не возвращают изображение.
Измените следующую строку. Вы используете OpenCV 3.1.0, но вы написали код с использованием OpenCV 2.7.x.
(cnts, _) = cv2.findContours(thresh.copy(), cv2.RETR_TREE,
cv2.CHAIN_APPROX_SIMPLE)
Также эта ссылка поможет вам.