Search code examples
pythonopencvopencv3.0

compatibility issue with contourArea in openCV 3


I am trying to do a simple area calculation of contours I get from findContours. My openCv version is 3.1.0

My code is:

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 seem to solve it, I have a feeling its just typecasting altough I expect the findContours result to match the type of contourArea

Thanks :)

EDIT: turns out I need to take the 2nd argument of findContours

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

Solution

  • In Opencv 3 API version the cv2.findContours() returns 3 objects

    • image
    • contours
    • hierarchy

    So you need to rewrite your statement as:

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