Быстрый поиск изображений внутри изображения попиксельно

Мне нужно найти в изображении другое изображение за минимальное время (вывести их координаты) на Python. Если это изображение встречается несколько раз, то надо найти их все. Желательно использовать PIL.

Я нашёл пару кодов, выполняющих это... Но мне нужна максимально возможная скорость, чего не дают те программы.


Ответы (1 шт):

Автор решения: Алексей Сенокосов

Результатом выполнения программы будут координаты всех вхождений изображения needle в изображение haystack с порогом совпадения threshold.

import cv2 #pip install opencv-python
import numpy as np

haystack = cv2.imread('1.jpg')
needle = cv2.imread('2.jpg')

# Выполняем поиск совпадений
result = cv2.matchTemplate(haystack, needle, cv2.TM_CCOEFF_NORMED)

# Определяем порог совпадения
threshold = 0.8

# Получаем координаты всех совпадений
locations = []
for y, x in zip(*np.where(result >= threshold)):
    locations.append((x, y))

# Выводим координаты совпадений
print('Совпадение на координатах:', locations)
→ Ссылка