微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

改进模板与多个模板的一个图像匹配/在图像上查找字符

如何解决改进模板与多个模板的一个图像匹配/在图像上查找字符

想法: 我有一个屏幕截图,想在这图片上找到所有字符和数字及其位置。最简单的方法是使用 opencv 匹配模板并将我拥有的所有字符(大约 800 个)作为“.png”与屏幕截图进行比较。

myTemplatesPath = "C:/MyPath/Templates/"
allTemplateFiles = [os.path.join(root,name) for root,dirs,files in os.walk(myTemplatesPath) for name in files]
Templates_all = [cv2.imread(f,cv2.IMREAD_GRAYSCALE) for f in allTemplateFiles]   
imgrey = cv2.cvtColor(screenshot,cv2.COLOR_BGR2GRAY)
for template in Templates_all:       
   results = cv2.matchTemplate(imgrey,template,cv2.TM_CCOEFF_norMED)
   results = np.where(results > 0.99)

图片

enter image description here

具有不同字体大小的模板(只是一些示例):

enter image description here

,

enter image description here

enter image description here

这 100% 工作正常。我唯一的问题是速度。查找图像中的所有位置大约需要 6s,因为它必须将 800 个模板与这 1 个图像进行比较。这次我想改进。

我有几个想法来提高这个速度:

  1. 使用OCR -> 不可靠,无法识别每个字符
  2. 特征检测没有检测到所有字符,就像大“L”没有特征一样。
  3. 使用查找轮廓将图像划分为 ROI,然后提取这些轮廓的宽度和高度,然后只比较适合提取的宽度和高度大小的模板。这将大大减少屏幕比较并提高速度,但查找轮廓会导致将字符分成 3 个或更多部分的轮廓,从而导致高度和宽度不正确。

所以我仍在寻找一种找到字符位置的好方法,该方法 100% 可靠但速度更快。 (我更喜欢第 3 个想法,但我对每个提案都持开放态度)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。