Help
cancel
Showing results for
Did you mean:
Highlighted
Copilot Lvl 3
Message 1 of 2

## A more efficient way of comparing two images in a python

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))```
Highlighted
Commander Lvl 2
Message 2 of 2

## Re: A more efficient way of comparing two images in a python

See the 4th answer to this:

https://stackoverflow.com/questions/3049370/how-to-find-an-image-within-another-image-using-python

Other thoughts:

Parallelism - break the larger image down into parts, process each on separate thread.

https://stackoverflow.com/questions/7670112/finding-a-subimage-inside-a-numpy-image

Let me know what you find out - I'd be interested in the answer!

New solutions