Я хочу проверить, соответствует ли шаблон в opencv

#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:

  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]
      
  1. Получите функции вашего изображения.

  • введите описание изображения здесь   введите описание изображения здесь
  1. Проверьте, соответствуют ли функции шаблона функциям изображения.

 result = cv2.matchTemplate(edged, template, cv2.TM_CCOEFF)
  
  • cv2.TM_CCOEFF это просто вариант, вы можете использовать множество других шаблонов
  1. Найдите минимальное и максимальное значения result переменной

 (_, maxVal, _, maxLoc) = cv2.minMaxLoc(result)
  
  1. Теперь вы можете проверить, соответствует ли шаблон True Или False.

 found = (maxVal, maxLoc, r)
  

Итак, если шаблон обнаружен, found переменная возвращается с кортежем длиной 3, что означает, что да, шаблон соответствует. Например:

 (495.000, (148, 26), 1)
  
  • 495.000 — это максимальное значение в массиве.

  • (148, 26) являются начальными (x, y) координатами найденного объекта.

  • 1.0 — это радиус.

Комментарии:

1. Рад, если я помогу 🙂