这是在做错事:
contours = contours[0] if imutils.is_cv2() else contours[1]
imutils.is_cv2()是返回
False即使它应该返回
True。如果您不介意删除此依赖项,请更改为:
contours = contours[0]
我找出原因了。您关注的教程可能是在OpenCV 4发布之前发布的。OpenCV
3更改
cv2.findContours(...)为return
image, contours, hierarchy,而OpenCV
2
cv2.findContours(...)和OpenCV
4
cv2.findContours(...)返回
contours,hierarchy。因此,在使用OpenCV 4之前,可以正确地说,如果使用OpenCV 2,则应该是
contours[0]else
contours[1]。如果您仍然希望具有这种“兼容性”,则可以更改为:
contours = contours[1] if imutils.is_cv3() else contours[0]



