python-3.x - 在 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 - 使用 Django,如何确保管理命令具有自定义日志记录?
- python - how to count unique values from two columns based on another column? (per ID)
- sql-server - 如何在 SQL Server 中用 NULL 替换列中的值?
- javascript - ES6 导入在终端上运行时给出 Unexpected Identifier SyntaxError
- python - 使用不同的类模拟对类构造函数的调用
- css - 如何通过所需的项目定位实现 Bootstrap 垂直网格布局
- python - 如何创建一个以一定角度显示一堆图像的图形?
- haskell - 当使用 -F -pgmF 调用时,给 Haskell 自定义预处理器的前两个参数有什么区别?
- c# - 如何修复:使用 Visual Studio 在 C# 中“无法导入数据库”
- azure - 如何在 Azure Kubernetes 服务上公开 http/https 应用程序