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

Рейтинг: -1Ответов: 1Опубликовано: 23.04.2023

Мне нужно найти в изображении другое изображение за минимальное время (вывести их координаты) на 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)