How to properly use cv2.findContours() on opencv version 4.4.0.?

后端 未结 2 2050
长发绾君心
长发绾君心 2021-01-27 16:27

Im trying to use cv2.findContours() on opencv version 4.4.0. (Im using Python version 3.8.5) but it throws an error, I cant figure out. Im not sure whats wrong with the code. He

2条回答
  •  我在风中等你
    2021-01-27 17:07

    In Python/OpenCV 4.4.0, findContours returns only 2 values, you list 3.

    You show:

    image,contours,hierarchy = cv2.findContours(binary,cv2.RETR_LIST,cv2.CHAIN_APPROX_SIMPLE)
    

    OpenCV 4.4.0, lists:

    contours, hierarchy = cv.findContours(image, mode, method[, contours[, hierarchy[, offset]]])
    

    Please always check the documentation. See

    https://docs.opencv.org/4.4.0/d3/dc0/group__imgproc__shape.html#gadf1ad6a0b82947fa1fe3c3d497f260e0

    One way to handle this in a version independent way, if all you want are the contours, is (credit to @nathancy):

    contours = cv2.findContours(binary, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)
    contours = contours[0] if len(contours) == 2 else contours[1]
    

    If you do not want all nested contours, then use RETR_EXTERNAL and not RETR_LIST.

提交回复
热议问题