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