无法理解Python中的OpenCV ROI访问代码

时间:2019-02-20 09:56:45

标签: python opencv roi

我试图了解使用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]

然后获取每个ROI的HOG,并用于预测数字。

问题在于,我无法理解访问ROI的途径。为什么pt1pt2这样定义?为什么leng是必需的?为什么我不能做

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

要获得投资回报率?

由于我是新手,所以我非常感谢一个简单的解释。谢谢!

0 个答案:

没有答案