openCV 3中与contourArea的兼容性问题

YNW*_*NWA 19 python opencv opencv3.0

我正在尝试对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\n'
Run Code Online (Sandbox Code Playgroud)

似乎无法解决它,我感觉它只是类型转换,我希望findContours结果匹配contourArea的类型

谢谢 :)

编辑:结果我需要采取findContours的第二个参数

 im2, cc, hierarchy = cv2.findContours(im_bw.copy(), cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
Run Code Online (Sandbox Code Playgroud)

Zda*_*daR 34

在Opencv 3 API版本中,cv2.findContours()返回3个对象

  • 图片
  • 轮廓
  • 等级制度

所以你需要重写你的陈述:

image, contours, hierarchy = cv2.findContours(im_bw.copy(), cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
Run Code Online (Sandbox Code Playgroud)