Сохранение только внешних контуров после нахождения их в OpenCV findcontours () - PullRequest
0 голосов
/ 19 мая 2019

Я пытаюсь извлечь рукописные символы сингальского языка.Я использовал поиск контуров для извлечения символов, и он отлично работает, за исключением одного сбоя.

Возвращает не символы, которые находятся внутри символов.например изображение! (https://imgur.com/TJl93oT) возвращается! (https://imgur.com/d1A6u86)! (https://imgur.com/WjObTMr)! (https://imgur.com/XlWUNz3)

Я хочу сохранить символы безпоследний, который является частью одного символа. Я попытался использовать флаг RETR_EXTERNAL, как показано в коде ниже, но затем ни один из символов не был извлечен.

        imagepath = 'E:/MScProject/main/for_extract/resizeimg.jpg'
        extract_write_path = 'E:/MScProject/main/extraction'
        extract_read_path = 'E:/MScProject/test/extract/*.*'

        #Extract characters from image
        img = cv2.imread(imagepath)

        gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
        #cv2.imshow('gray', gray)

        ret, thresh = cv2.threshold(gray, 0, 255, cv2.THRESH_OTSU)
        #cv2.imshow('thresh', thresh)

        im2, ctrs, hier = cv2.findContours(thresh.copy(), cv2.RETR_EXTERNAL, 
        cv2.CHAIN_APPROX_SIMPLE)
        sorted_ctrs = sorted(ctrs, key=lambda ctr: cv2.boundingRect(ctr)[0])

        for i, ctr in enumerate(sorted_ctrs):
            x, y, w, h = cv2.boundingRect(ctr)

            roi = img[y:y + h, x:x + w]

            area = w*h

            if 1000 < area < 100000:
                #rect = cv2.rectangle(img, (x, y), (x + w, y + h), (0, 255, 
          0), 2)
                #cv2.imshow('rect', rect)
                cv2.imwrite(os.path.join(extract_write_path , 
         'at'+str(i)+'.jpeg'), roi)
                #cv2.imwrite('at'+str(i)+'.jpeg', roi)        

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...