2016-09-13 18 views
10

Próbuję wykonać proste obliczenie powierzchni konturów, które uzyskuję z findContours. Moja wersja OpenCV jest 3.1.0Problem zgodności z konturem Konto w openCV 3

Mój kod to:

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' 

cant wydają się go rozwiązać, mam wrażenie jej tylko typecasting altough Spodziewam się findContours spowodować, aby dopasować rodzaj contourArea

Thanks :)

EDIT: okazuje się, że trzeba podjąć 2. argument findContours

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

mieć sprawdziłeś czy cc [0] jest puste? –

+2

znalazłem to po kopaniu więcej, okazuje się, że muszę zdobyć drugi argument findContours – YNWA

Odpowiedz

16

W OpenCV wersji 3 API cv2.findContours() zwraca 3 objects

  • obraz
  • kontury
  • hierarchii

Więc trzeba przepisać swoje oświadczenie:

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

Uratowałem moją noc, tks! –

Powiązane problemy