В версии Opencv 3 API cv2.findContours()
возвращается 3 объекта
- образ
- контуры
- иерархия
Поэтому вам нужно переписать свое заявление как:
image, contours, hierarchy = cv2.findContours(im_bw.copy(), cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
Я пытаюсь сделать простой расчет площадей контуров, которые я получаю от findContours. Моя версия openCv - 3.1.0
Мой код:
cc = cv2.findContours(im_bw.copy(), cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
cv2.contourArea(cc[0])
error: 'C:\builds\master_PackSlaveAddon-win32-vc12-static\opencv\modules\imgproc\src\shapedescr.cp...: error: (-215) npoints >= 0 && (depth == CV_32F || depth == CV_32S) in function cv::contourArea
'
Возможно, это не помогает, я чувствую, что это просто приведение к типу, я ожидаю, что результат findContours будет соответствовать типу контура.
Благодаря :)
EDIT: получается, мне нужно взять 2-й аргумент findContours
im2, cc, hierarchy = cv2.findContours(im_bw.copy(), cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
В версии Opencv 3 API cv2.findContours()
возвращается 3 объекта
Поэтому вам нужно переписать свое заявление как:
image, contours, hierarchy = cv2.findContours(im_bw.copy(), cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)