/ / Nie je možné nájsť presnú detekciu kontúry (opencv, python) - python, opencv, opencv-contour

Nie je možné nájsť presnú detekciu obrysu (opencv, python) - python, opencv, opencv-contour

Na tomto obrázku pracujem:

Použil som nasledujúci kód:

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

a dostal tieto kontúry:

Vyskúšal som všetky tieto funkcie ako rozmazanie,prahovanie, atď., ale ja nemám dostávať kontúry, ktoré očakávam. Musím nájsť čierny obrys a fialový obrys ako kontajnery, ale to, čo dostávam obrysy okolo textu namiesto ich pozadia kontajnera.

Ospravedlňte moju zlú angličtinu. Ak potrebujete niečo iné, opýtajte sa.

odpovede:

1 pre odpoveď č. 1

Odpovedám na moju vlastnú otázku po tom, čo som veľa preskúmala, že to môže pomôcť niekomu, kto je na tom istom probléme.

Ako je tu otázka ... nie sme schopní nájsť kontajnery na pozadí, ale so všetkými súčasnými technikami (ako je prahovanie, rozmazanie atď.) ... nebol som schopný sa dostať.

Takže prístup je pridať hranice (veľkosť = 10 alebo viac bude fungovať) a vybrať farbu, ktorá nie je prítomná v obraze vám všetky kontúry, ktoré potrebujete.

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