从OpenCV中的图像中提取轮廓 - Python

时间:2018-04-04 17:07:18

标签: python opencv image-processing opencv-contour

我有以下图像 result.png ,每个矩形都绘制了Countours:

enter image description here

在下一步中,我试图仅提取这些矩形的内部部分以获得具有集中数字(2,0,1,8)的图像。我使用的代码如下:

import cv2

BLACK_THRESHOLD = 200
THIN_THRESHOLD = 10

im = cv2.imread('result.png', 0)
ret, thresh = cv2.threshold(im, 127, 255, 0)
contours, hierarchy = cv2.findContours(thresh, 1, 3)
idx = 0
for cnt in contours:
    idx += 1
    x, y, w, h = cv2.boundingRect(cnt)
    roi = im[y:y + h, x:x + w]
    if h < THIN_THRESHOLD or w < THIN_THRESHOLD:
        continue
    cv2.imwrite(str(idx) + '.png', roi)
    cv2.rectangle(im, (x, y), (x + w, y + h), (200, 0, 0), 2)
cv2.imshow('img', im)
cv2.waitKey(0)

它正在工作,但它根据如下所示创建的Countours(每行不同的图像)给出每个可能的裁剪图像:

enter image description here

它正在提取 18张图像,而我只想要在其中心有数字但没有任何噪点的图像。任何人都可以帮助我缩小这个提取过程吗?

0 个答案:

没有答案