Coincidencia y aplicación de plantillas
1) Coincidencia de plantillas
La coincidencia de plantillas es una técnica para encontrar la parte de una imagen que mejor coincide (de manera similar) con otra imagen de plantilla. La coincidencia de plantillas no se basa en histogramas, sino en
Es un método para hacer coincidir la plantilla y la imagen de entrada deslizando el bloque de imagen (plantilla) en la imagen de entrada y comparando la similitud al mismo tiempo.
solicitud:
① Búsqueda y posicionamiento de objetivos
② Seguimiento de objetos en movimiento
③ Otros...
Coincidencia de plantillas: cv2.matchTemplate()
⚫ imagen: la imagen que se buscará (imagen grande)
⚫ templ: la plantilla de búsqueda, que debe tener el mismo tipo de datos que la imagen original y cuyo tamaño no puede ser mayor que la imagen de origen
⚫ resultado: la imagen mapeada de la resultado de la comparación, que debe ser una imagen de punto flotante de 32 bits de un solo canal, si el tamaño de la imagen original (imagen que se va a buscar) es ancho x alto,
Si el tamaño de la plantilla es wxh, el tamaño del resultado debe ser (W-w+1)x(H-h+1)
⚫ método: El método de coincidencia especificado, hay los siguientes 6 tipos:
cv2.TM_SQDIFF ----- -Método de coincidencia de diferencia cuadrática (mejor coincidencia 0) cv2.TM_SQDIFF_NORMED ------ método de coincidencia de diferencia cuadrática normalizada (mejor coincidencia 0) cv2.TM_CCORR ------ método de coincidencia de correlación (peor coincidencia 0) cv2.TM_CCORR_NORMED - ----- método de coincidencia de correlación normalizada (peor coincidencia 0) cv2.TM_CCOEFF ------ método de coincidencia de coeficientes (mejor coincidencia 1) cv2.TM_CCOEFF_NORMED ------ método de coincidencia de coeficientes de correlación normalizada (mejor coincidencia 1)
res = cv2 .matchTemplate (img,temp,CV2 .TM CCORR NORMED)
min_val, max_val, min_loc, max_loc = cv2 .minMaxLoc (res)
En general, a medida que pasamos de medidas simples (diferencias al cuadrado) a medidas más complejas (coeficientes de correlación), obtenemos coincidencias cada vez más precisas (lo que también significa cálculos cada vez más grandes).
Lo mejor que puede hacer es experimentar un poco con todas estas configuraciones para elegir la mejor combinación de velocidad y precisión para su aplicación.
Normalización de matrices—cv2.normalize()
⚫src: ingrese la imagen original
⚫dst: emita la imagen resultante, que debe tener el mismo tamaño y tipo que la imagen original
⚫alfa: el valor mínimo después de la normalización, el valor predeterminado es 1
⚫beta: el valor máximo después de la normalización , el valor por defecto es 0
⚫norm_type: tipo de normalización, opcional NORM_INF, NORM_L1, NORM_L2 (predeterminado), etc.
⚫dtype: valor por defecto -1, cuando este parámetro es negativo, la matriz de salida y src tienen el mismo tipo
⚫mask: operación de máscara opcional
cv2.normalize(roihist,roihist,0,255,CV2.NORM_MINMAX)
El papel de normalize0) es normalizar la matriz.
Encuentre el valor máximo: cv2.minMaxLoc()
⚫src: ingrese la imagen original, imagen de un solo canal
⚫minVal: devuelva el puntero del valor mínimo, si no necesita regresar, establezca 0
⚫maxVal: devuelva el puntero del valor máximo, si no se necesita volver ponerlo a 0
⚫minLoc: Devolver el puntero de la posición mínima, si no es necesario volver poner a 0
⚫maxLoc: Devolver el puntero de la posición máxima, si no es necesario volver, poner a 0
⚫máscara: Funcionamiento máscara opcional
res = cv2 .matchTemplate (img ,temp,CV2 .TM CCORR NORMED)
min val, max val, min loc, max loc = cv2 .minMaxLoc(res)
El propósito de la función minMaxLoc0) es encontrar los valores mínimos y máximos globales en la matriz.