首页 > 解决方案 > 在 python 中比较两个图像的更有效的方法

问题描述

我有一个任务,我需要在大图像中指定小图像的左上角坐标。我实现了这段代码,但是它太慢了,因为我有 20 秒的时间限制,并且在某些数据集中我有 3000 张图像。怎样才能更有效地实施呢?我可以使用标准 python 库中的 numpy、scipy 和所有包。

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))

标签: python-3.xnumpypython-imaging-libraryimage-comparison

解决方案


推荐阅读