Не может понять код доступа к ROI OpenCV в Python - PullRequest
0 голосов
/ 20 февраля 2019

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

Учитывая пороговое изображение im_th,

Эта часть получает ограничивающие прямоугольники контуров визображение:

ctrs, hier = cv2.findContours(im_th.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
rects = [cv2.boundingRect(ctr) for ctr in ctrs]

... и эта часть получает ROI, который соответствует каждому ограничивающему прямоугольнику:

for rect in rects:

    # Draw the rectangles
    cv2.rectangle(im, (rect[0], rect[1]), (rect[0] + rect[2], rect[1] + rect[3]), (0, 255, 0), 3)

    # Make the rectangular region around the digit

    leng = int(rect[3] * 1.6)
    pt1 = int(rect[1] + rect[3] // 2 - leng // 2)
    pt2 = int(rect[0] + rect[2] // 2 - leng // 2)

    roi = im_th[pt1:pt1+leng, pt2:pt2+leng]

И затем берется HOG каждого ROI, и используется дляпредсказать цифру.

Проблема в том, что я не понимаю бит, который получает доступ к ROI.Почему pt1 и pt2 определены так?Почему leng необходим?Почему я не могу просто сделать

roi = im_th[rect[1]:rect[3],rect[0]:rect[2]]

Чтобы получить рентабельность инвестиций?

Поскольку я новичок в этом, я действительно ценю простое объяснение.Спасибо!

...