Более эффективный способ сравнения двух изображений в python - PullRequest
0 голосов
/ 15 марта 2020

У меня есть задача, где мне нужно указать верхнюю левую координату меньшего изображения на большом изображении. Я реализовал этот код, однако он слишком медленный, поскольку у меня есть ограничение по времени 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))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...