Группируйте ограничительные рамки по их контурам в Python OpenCV - PullRequest
0 голосов
/ 21 апреля 2020

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

Теперь я пытаюсь сохранить ограничивающие рамки каждого изображения в список.

Вот фрагмент кода, который у меня есть.

n=0
rect_r_d=[] #store the bounding boxes dimensions of the individual letters
min_r_cont_area=40
for i in range(0,len(sorted_cnt_r)): #sorted_cnt_r has the sorted contours of the letters 
    for j in range(0,len(sorted_cnt_r[i])):
        if cv2.contourArea(sorted_cnt_r[i][j])>min_r_cont_area:
            box_rd=cv2.boundingRect(sorted_cnt_r[i][j])
            xr,yr,wr,hr=box_rd
            cv2.rectangle(roi_n_cont[n], (xr,yr),(xr+wr,yr+hr), (255, 0, 0),2)

            rect_r_d.append([xr,yr,wr,hr]) 
    n+=1


print(rect_r_d)
#[[6, 8, 35, 92], [48, 0, 28, 100], [85, 30, 30, 70], [5, 0, 40, 84], [55, 6, 9, 78], [74, 24, 40, 76], [5, 0, 32, 100], [44, 30, 28, 70], [83, 0, 32, 100], [5, 30, 41, 70], [52, 30, 27, 70], [87, 0, 5, 100], [98, 0, 18, 100], [24, 4, 81, 89], [7, 18, 29, 82], [45, 18, 33, 82], [88, 0, 26, 100], [5, 0, 52, 100], [70, 0, 43, 100], [5, 0, 23, 80], [36, 14, 36, 67], [82, 14, 33, 86], [6, 30, 60, 70], [73, 0, 40, 100], [5, 16, 24, 84], [39, 0, 32, 100], [81, 30, 34, 70], [3, 0, 16, 100], [25, 30, 18, 70], [49, 31, 16, 69], [71, 30, 12, 70], [89, 30, 16, 70], [114, 0, 6, 100]]
print('You have',len(rect_r_d), 'individual letters in your image')
# You have 33 individual letters in your image


Мой вопрос: как мне получить print(rect_r_d), чтобы быть списком списков на основе отсортированных контуров? sorted_cnt_r.

Мой список списка будет выглядеть примерно так:

print(rect_r_d)=[[[6, 8, 35, 92], [48, 0, 28, 100], [85, 30, 30, 70]],[[5, 0, 40, 84], [55, 6, 9, 78], [74, 24, 40, 76]], [[5, 0, 32, 100], [44, 30, 28, 70], [83, 0, 32, 100]], [[5, 30, 41, 70], [52, 30, 27, 70], [87, 0, 5, 100], [98, 0, 18, 100]],[[24, 4, 81, 89]],[[7, 18, 29, 82], [45, 18, 33, 82], [88, 0, 26, 100]], [[5, 0, 52, 100], [70, 0, 43, 100]], [[5, 0, 23, 80], [36, 14, 36, 67], [82, 14, 33, 86]], [[6, 30, 60, 70], [73, 0, 40, 100]], [[5, 16, 24, 84], [39, 0, 32, 100], [81, 30, 34, 70]], [[3, 0, 16, 100], [25, 30, 18, 70], [49, 31, 16, 69], [71, 30, 12, 70], [89, 30, 16, 70], [114, 0, 6, 100]]]

Мое входное изображение: Original image

Мой обрезанный Изображение Рой:

Cropped Word Image

Мои ограничительные рамки для обрезанного выше изображения:

[[6, 8, 35, 92], [48, 0, 28, 100], [85, 30, 30, 70]]

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