【发布时间】:2017-04-06 22:34:29
【问题描述】:
我这里有一张图片:
我想找到问题编号,即:
所以,一般来说,对于正常的形状,我可以为这个家伙使用形状检测或模板匹配:
但是,区域内有数字。
有人知道这种情况吗?
Opencv:3.2.0
Python:2.7.10
编辑 1
这是模板匹配的代码:
#!/usr/bin/env python
import cv2
import numpy as np
img_rgb = cv2.imread('papere1.jpg')
img_gray = cv2.cvtColor(img_rgb, cv2.COLOR_BGR2GRAY)
template = cv2.imread('no.png',0)
#template = cv2.imread('2.jpg',0)
#template = cv2.imread('papere3.jpg',0)
#cv2.imshow('origin',img_rgb)
#cv2.waitKey(0)
w, h = template.shape[::-1]
res = cv2.matchTemplate(img_gray,template,cv2.TM_CCOEFF_NORMED)
threshold = 0.4
loc = np.where( res >= threshold)
print loc
for pt in zip(*loc[::-1]):
cv2.rectangle(img_rgb, pt, (pt[0] + w, pt[1] + h), (0,0,255), 2)
cv2.imshow('Detected',img_rgb)
cv2.waitKey(0)
这是模板png:
但是,目标只有在我设置阈值
编辑 2
上面的代码将阈值设置为 0.6,我得到了这个:
所以,看起来不错,但我们可以看到 6 的目标被错过了。而且我认为目标内的数字越多,匹配度就越低。
谢谢。
【问题讨论】:
-
您尝试过模板匹配吗?我认为即使形状中有数字,相关性仍然很高。
-
您好,请参阅我上面的编辑 1,相关性较差且不准确。
-
嗯,现在编辑更好。如果您知道所有图像的目的地总是在图像的左侧 15%,我建议您裁剪它,并为图像/模板的至少 10 个金字塔运行模板匹配并检查它们。这是一种肮脏的方法,但它可能有效。
-
我看到了您发布的链接,但似乎不是我想要的。它与比例匹配更相关。实际上,我的情况是模板尺寸与原始图像中的目标几乎相同。但是该链接很有用,因为我们稍后可能会遇到问题:-)