I have a task where i need to specify the upper left coordinate of the smaller image in the larger image. I implemented this code, however it is too slow since I have a time limit of 20 seconds, and in some datasets I have 3000 images. How can this be implemented more effectively? I can use numpy, scipy and all packages from the standard python library.
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))