too many values to unpack calling cv2.findContours

前端 未结 1 520
小蘑菇
小蘑菇 2020-12-18 15:11

I am a python beginner . I was trying to run this code :

#applying closing function 
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (7, 7))
closed = cv2.         


        
相关标签:
1条回答
  • 2020-12-18 15:24

    It appears that you're using OpenCV version 3.x, while writing code intended for the 2.x branch. There were some API changes between those two branches. Since you're using Python, you have a handy help available -- make sure to use it, along with the documentation.

    OpenCV 2.x:

    >>> import cv2
    >>> help(cv2.findContours)
    Help on built-in function findContours in module cv2:
    
    findContours(...)
        findContours(image, mode, method[, contours[, hierarchy[, offset]]]) -> contours, hierarchy
    

    OpenCV 3.x:

    >>> import cv2
    >>> help(cv2.findContours)
    Help on built-in function findContours:
    
    findContours(...)
        findContours(image, mode, method[, contours[, hierarchy[, offset]]]) -> image, contours, hierarchy
    

    This means that in your script the correct way to call findContours when using OpenCV 3.x would be something like

    (_, cnts, _) = cv2.findContours(closed.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
    

    UPDATE (Dec 2018)

    In OpenCV 4.x, findContours returns 2 values only.

    >>> help(cv2.findContours)
    Help on built-in function findContours:
    
    findContours(...)
        findContours(image, mode, method[, contours[, hierarchy[, offset]]]) -> contours, hierarchy
        .   @brief Finds contours in a binary image.
    
    0 讨论(0)
提交回复
热议问题