#python #opencv #artificial-intelligence
#python #opencv #искусственный интеллект
Вопрос:
Я хочу проверить, соответствует ли шаблон True Или False.
Просто что-то вроде этого:
import cv2 as cv
import numpy as np
from matplotlib import pyplot as plt
img = cv.imread('messi5.jpg',0)
img2 = img.copy()
template = cv.imread('template.jpg',0)
w, h = template.shape[::-1]
methods = ['cv.TM_CCOEFF', 'cv.TM_CCOEFF_NORMED', 'cv.TM_CCORR',
'cv.TM_CCORR_NORMED', 'cv.TM_SQDIFF', 'cv.TM_SQDIFF_NORMED']
for meth in methods:
img = img2.copy()
method = eval(meth)
res = cv.matchTemplate(img,template,method)
min_val, max_val, min_loc, max_loc = cv.minMaxLoc(res)
if template_match:
//do something
Я прочитал это, но я не понимаюhttps://docs.opencv.org/master/d4/dc6/tutorial_py_template_matching.html
Спасибо за ответы.
Ответ №1:
- Получите возможности вашего шаблона.
-
Функции изображения, такие как края и точки интереса, предоставляют обширную информацию о содержимом изображения. Источник
-
Например: если ниже приведен ваш шаблон, найдите его характеристику.
import numpy as np import imutils import glob import cv2 template = cv2.imread("template.jpg") template = cv2.cvtColor(template, cv2.COLOR_BGR2GRAY) template = cv2.Canny(template, 50, 200) (h, w) = template.shape[:2]
- Получите функции вашего изображения.
- Проверьте, соответствуют ли функции шаблона функциям изображения.
result = cv2.matchTemplate(edged, template, cv2.TM_CCOEFF)
cv2.TM_CCOEFF
это просто вариант, вы можете использовать множество других шаблонов
- Найдите минимальное и максимальное значения
result
переменной
(_, maxVal, _, maxLoc) = cv2.minMaxLoc(result)
- Теперь вы можете проверить, соответствует ли шаблон True Или False.
found = (maxVal, maxLoc, r)
Итак, если шаблон обнаружен, found
переменная возвращается с кортежем длиной 3, что означает, что да, шаблон соответствует. Например:
(495.000, (148, 26), 1)
-
495.000 — это максимальное значение в массиве.
-
(148, 26) являются начальными
(x, y)
координатами найденного объекта. -
1.0 — это радиус.
Комментарии:
1. Рад, если я помогу 🙂