Найти все места изображения в увеличенном изображении в Python - PullRequest
0 голосов
/ 11 апреля 2020

У меня есть скан панели, который я не могу показать из-за ограничений, но я попытался «имитировать» его:

enter image description here

Это изображение имитирует изображение, которое у меня есть: белый фон с круглыми черными наклейками, каждый из которых имеет белый меньший круг в середине. Некоторые наклейки немного отличаются на скане, но тип формы / наклейки всегда один и тот же.

Теперь мне нужно написать код, который сможет посмотреть на этом изображении и показать + вернуть все местоположения наклейки. Я смог найти это для одного местоположения, используя сопоставление шаблонов OpenCV, но он смог найти только одно точное совпадение с меньшим изображением, которое я предоставляю в качестве входных данных. Мне нужно найти все места одновременно.

Я не смог найти топи c здесь или в любом месте, которое покрывает мой вопрос.

Надеюсь, кто-то может помочь.

С уважением, Гейн sh

1 Ответ

0 голосов
/ 11 апреля 2020

Мне удалось заставить это работать с относительно простым python сценарием для сопоставления нескольких шаблонов объектов.

Я использовал следующее изображение в качестве шаблона.jpg

enter image description here

Я написал сценарий следующим образом

import cv2
import numpy as np

#load image into variable
img_rgb = cv2.imread('scan.jpg')

#load template
template = cv2.imread('template.jpg')

#read height and width of template image
w, h = template.shape[0], template.shape[1]

res = cv2.matchTemplate(img_rgb,template,cv2.TM_CCOEFF_NORMED)
threshold = 0.8
loc = np.where( res >= threshold)
for pt in zip(*loc[::-1]):
    cv2.rectangle(img_rgb, pt, (pt[0] + w, pt[1] + h), (0,255,0), 2)

img_rgb = cv2.resize(img_rgb,(800,600))
cv2.imshow("result",img_rgb)
cv2.waitKey(10000)

Это дало результат как

img_rgb output

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...