У меня есть задача, где мне нужно указать верхнюю левую координату меньшего изображения на большом изображении. Я реализовал этот код, однако он слишком медленный, поскольку у меня есть ограничение по времени 20 секунд, а в некоторых наборах данных у меня 3000 изображений. Как это может быть реализовано более эффективно? Я могу использовать numpy, scipy и все пакеты из стандартной библиотеки python.
import numpy as np
from PIL import Image
map_image_path = input()
map_image = Image.open(map_image_path)
map_ar = np.asarray(map_image)
map_ar_y, map_ar_x = map_ar.shape[:2]
i = int(input())
dimensions = input()
patches=list()
for k in range(i):
patch_image_path = input()
patches.append(Image.open(patch_image_path))
for j in range(i):
patch_ar = np.asarray(patches[j])
patch_ar_y, patch_ar_x = patch_ar.shape[:2]
stop_x = map_ar_x - patch_ar_x + 1
stop_y = map_ar_y - patch_ar_y + 1
for x in range(0, stop_x):
for y in range(0, stop_y):
x2 = x + patch_ar_x
y2 = y + patch_ar_y
picture = map_ar[y:y2, x:x2]
if np.array_equal(picture, patch_ar):
print(str(x) + "," + str(y))