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 № 1Odpowiadam 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] )