繁体   English   中英

如何提高OpenCV模板匹配的准确性

[英]How to improve accuracy of OpenCV template matching

我尝试使用MatchTemplate()来匹配图像中的数字。 例如,图像中的数字为[0985-977-735]。 并得到以下结果:(number,location)[(0,1),(3,103),(5,33),(5,116),(7,62),(7,73),( 7,85),(8,21),(9,11),(9,53)]

但是在大多数情况下,准确性非常低。

[0983-945-180]:[(0,113),(1,93),(3,31),(4,62),(5,74),(8,103),(9,11) ,((9,53)]前0和8无法识别。

[0932-509-607] [(0,103),(2,31),(3,21),(5,54),(6,92),(7,113),(9,72)]无法识别第一个,第二个零和前九个。

[0911-873-752] [(0,1),(1,22),(1,33),(2,113),(3,72),(5,105),(7,92), ((8,52),(9,11)]前七个无法识别。

部分代码如下:

import cv
for i in range(10):
    template_im = cv.LoadImage(template_file, cv.CV_LOAD_IMAGE_GRAYSCALE)
    width = original_im.width - template_im.width + 1
    height = original_im.height - template_im.height +1
    result_image = cv.CreateImage((width, height), cv.IPL_DEPTH_32F, 1)
    cv.Zero(result_image)
    cv.MatchTemplate(original_im, template_im, result_image, cv.CV_TM_CCOEFF_NORMED)
    (_, R, _, max_loc) = cv.MinMaxLoc(result_image)

    if R < 0.90:
        pass
    else:
        phone_number_location.append((i, max_loc[0]))
        ...
        ...

您可能希望为此使用SimpleCV。 它是用python编写的。 您需要的大多数东西都在其中。 我仅用15行代码编写了一个基本的图像拼接应用程序。 希望这可以帮助。 使用github中的代码,因为模板匹配是SimpleCV中的新增功能。 希望这可以帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM