/ / Nie można znaleźć dokładnego wykrywania konturu (opencv, python) - python, opencv, opencv-contour

Nie można znaleźć dokładnego wykrycia konturu (opencv, python) - python, opencv, opencv-contour

Pracuję nad tym obrazem:

Użyłem następującego kodu:

input_img = cv2.imread(input_image)
img = cv2.imread(input_image, 0)

kernel = np.ones((5,5),np.uint8)
# morphological_img = cv2.morphologyEx(img, cv2.MORPH_GRADIENT, kernel)
# # morphological_img = cv2.threshold(morphological_img, morphological_img, 128, 255, cv2.THRESH_BINARY_INV)
# # img = cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel)

# morphological_img = cv2.medianBlur(morphological_img, 5)


canny_img = cv2.Canny(input_img, 100, 200)
_, contours, hierarchy = cv2.findContours(canny_img, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE) # get contours

i otrzymałem te kontury:

Próbowałem wszystkich tych funkcji, takich jak rozmycie,progowanie itd., ale nie dostaję konturów, których się spodziewam. Muszę znaleźć czarny kontur i fioletowy kontur jak kontenery, ale to, co otrzymuję wokół konturów tekstu zamiast kontenera tła.

Przepraszam za mój zły język angielski. Jeśli potrzebujesz czegoś innego, zapytaj.

Odpowiedzi:

1 dla odpowiedzi № 1

Odpowiadam na moje pytanie po przeprowadzeniu wielu badań, sądząc, że może to pomóc komuś, kto utknął w tym samym problemie.

Ponieważ pytanie jest tutaj ... nie jesteśmy w stanie znaleźć kontenerów w tle, ale z wszystkimi obecnymi technikami (takimi jak progowanie, rozmycie itp.) ... nie byłem w stanie tego uzyskać.

Podejście polega na dodaniu obramowania (rozmiar = 10 lub więcej będzie działać) i wybranie koloru, który nie jest obecny na obrazie, co zapewni wszystkie potrzebne obrysy.

bordersize = 10
img = cv2.copyMakeBorder(img, top=bordersize, bottom=bordersize, left=bordersize, right=bordersize, borderType= cv2.BORDER_CONSTANT, value=[247, 248, 188] )