Showing results for 
Search instead for 
Did you mean: 
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 =
map_ar = np.asarray(map_image)
map_ar_y, map_ar_x  = map_ar.shape[:2]

i = int(input())
dimensions = input()

for k in range(i):
  patch_image_path = input()

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))
1 Reply
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:


Other thoughts:

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


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


Please follow-up to let us know how you made out. For good karma, mark a reply as the answer if it helped!