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)]最初、2 番目のゼロ、最初の 9 は認識できません。
[0911-873-752] [(0、1)、(1、22)、(1、33)、(2、113)、(3、72)、(5、105)、(7、92)、 (8, 52), (9, 11)] 最初の 7 つは認識できません。
コードの一部は次のとおりです。
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]))
...
...