Я пытаюсь извлечь рукописные символы сингальского языка.Я использовал поиск контуров для извлечения символов, и он отлично работает, за исключением одного сбоя.
Возвращает не символы, которые находятся внутри символов.например изображение! (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)
Я хочу получить только два символа, а невнутренний характер, как показано на этом изображении. Я был бы очень благодарен за любую помощь.