我尝试使用MatchTemplate()匹配图片中的数字。例如,图像中的数字为[0985-977-735]。 得到如下结果:(数量,位置) [(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)] 第一个零和八个无法识别。
[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]))
...
...
答案 0 :(得分:0)
您可能希望使用SimpleCV。它是用python编写的。您需要的大部分内容都在其中。我用15行代码编写了一个基本的图像拼接应用程序。希望这可以帮助。使用github中的代码,因为模板匹配是SimpleCV中的新功能。 希望这可以帮助。