Контур возвращает удвоенное количество объектов, когда край толстый - PullRequest
0 голосов
/ 25 сентября 2019

Я использую opencv findContours, чтобы найти количество объектов на изображении.Однако он всегда возвращает дублированный номер, потому что он обнаружит как внутренний, так и внешний край.

Однако я не могу использовать RETR_EXTERNAL, потому что в объекте все еще есть объект.

    import cv2 
    import numpy as np 
    img = cv2.imread('image.jpg') 
    canvas = np.zeros(img.shape, np.uint8)
    img2gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
    ret,thresh = cv2.threshold(img2gray,128,255,cv2.THRESH_BINARY_INV)
    im2,contours,hierarchy = cv2.findContours(thresh, cv2.RETR_CCOMP, cv2.CHAIN_APPROX_TC89_L1)
    print(len(contours))

Например, это изображение: https://pasteboard.co/Iz3wMjg.png

В этом случае возвращается 6, однако есть только 3 круга.Есть ли способ избежать этого?

...