2016-09-13 2 views
10

Я пытаюсь сделать простой расчет площадей контуров, которые я получаю от findContours. Моя OpenCV версия 3.1.0проблема совместимости с контуромArea в openCV 3

Мой код:

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\n' 

Брус, кажется, решить, я чувство его просто типажей Altough Я ожидаю, что findContours привести к соответствовать типу contourArea

спасибо :)

EDIT: получается, мне нужно взять 2 аргумент findContours

im2, cc, hierarchy = cv2.findContours(im_bw.copy(), cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) 
+0

есть вы отметили, что cc [0] пуст? –

+2

нашел его после копания больше, оказывается, мне нужно получить 2-й аргумент findContours – YNWA

ответ

16

В OpenCV 3 API версии на cv2.findContours() возвращается 3 objects

  • изображения
  • контуры
  • иерархии

Так что вам нужно переписать заявление, как:

image, contours, hierarchy = cv2.findContours(im_bw.copy(), cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) 
+0

Сохраненный мой вечер, tks! –