Я пытаюсь создать программу, которая знает, какое число на изображении, с помощью следующей функции:
def img_in_img(big_picture, small_picture, tamper):
big_picture = str(big_picture)
small_picture = str(small_picture)
if os.path.isfile(big_picture) == False or os.path.isfile(small_picture) == False:
return "Image does not exist"
img = cv2.imread(big_picture,0)
templace_loc = small_picture
template = cv2.imread(templace_loc,0)
w, h = template.shape[::-1]
method = cv2.TM_CCOEFF
tamper = int(tamper)
res = cv2.matchTemplate(img,template,method)
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(res)
top_left = max_loc
bottom_right = (top_left[0] + w, top_left[1] + h)
height, width, channels = cv2.imread(templace_loc).shape
if int(top_left[0]) < int(height + tamper) and int(top_left[0]) > int(height - tamper) and int(top_left[1]) < int(width + tamper) and int(top_left[1]) > int(width - tamper):
return True
else:
return False
Но тогда, когда я проверяю, есть ли 7.png
в img.png
с кодом
nur = "7"
if img_in_img("2020-01-14-17-36-08.537043/verification_image2.png", "verifynr/" + "old_orange" + "/" + nur + ".png", 25):
print(Style.BRIGHT + Fore.GREEN + "Color: " + "old_orange" + ", Num: " + nur + Fore.RESET)
else:
print(Style.BRIGHT + Fore.RED + "Color: " + "old_orange" + ", Num: " + nur + Fore.RESET)
это дает мне КРАСНЫЙ: Color: old_orange, Num: 7
, но затем, если я проверю, находится ли 6.png
в img.png
, изменив nur
с 7
на 6
это дает мне зеленый цвет: Color: old_orange, Num: 6
, но это неправильное изображение.
Я также попробовал следующий код:
img_rgb = cv2.imread("2020-01-14-17-36-08.537043/verification_image2.png")
img_gray = cv2.cvtColor(img_rgb, cv2.COLOR_BGR2GRAY)
template = cv2.imread('verifynr/old_orange/7.png',0)
w, h = template.shape[::-1]
res = cv2.matchTemplate(img_gray,template,cv2.TM_SQDIFF)
threshold = 0.8
loc = np.where( res >= threshold)
pt = list(zip(*loc[::-1]))
if len(pt) >= 1:
print("True")
, который печатает True
, но это делает что для каждого числа png я сохранил.
Как мне заставить мою программу распознавать 7.png
в img.png
без распознавания каждого отдельного числа png?
img.png:
6.png:
7.png: