A correspondência de modelos é uma técnica para encontrar a parte mais correspondente (semelhante) de uma imagem para outra.
Função: imgproc.matchtemplate (imagem MAT, MAT Templ, resultado do MAT, método int)
Descrição do parâmetro:
Imagem: imagem de origem
Templ: imagem de modelo
Resultado: Compare os resultados
Método: algoritmo correspondente
Algoritmo correspondente:
TM_SQDIFF Método de correspondência de diferença ao quadrado: Este método usa diferença quadrada para corresponder; O melhor valor de correspondência é 0; Quanto pior a partida, maior o valor da correspondência.
Método de correspondência de correlação TM_CCORR: Este método usa operação de multiplicação; Quanto maior o valor, melhor o grau de correspondência.
TM_CCoeff Correlação Coeficiente Método de correspondência: 1 representa uma combinação perfeita; -1 representa a pior partida.
TM_SQDIFF_NORMED Método de correspondência de diferença quadrada normalizada.
TM_CCORR_NORMED Método de correspondência de correlação normalizada.
TM_CCOEFF_NORMED Método de correspondência de coeficiente de correlação normalizado.
Código de exemplo:
public static void main (string [] args) {// TODO Method Method Stub System.LoadLibrary (core.native_library_name); Mat g_tem = imgcodecs.imread ("f: //mould.jpg"); Mat g_src = imgcodecs.imread ("f: //source.jpg"); int result_rows = g_src.rows () - g_tem.rows () + 1; int resultado_cols = g_src.cols () - g_tem.cols () + 1; Mat g_result = new Mat (Result_rows, resultado_cols, cvtype.cv_32fc1); Imgproc.matchTemplate (g_src, g_tem, g_result, imgproc.tm_ccorr_normed); // Método de correspondência de variância quadrada normalizada // imgproc.matchtemplate (g_src, g_tem, g_result, // imgproc.tm_ccoeff_normed); // Método de correspondência de coeficiente de correlação normalizado // imgproc.matchtemplate (g_src, g_tem, g_result, imgproc.tm_ccoeff); // // // // Método de correspondência do coeficiente de correlação: 1 representa uma combinação perfeita; -1 representa a pior partida. // imgproc.matchtemplate (g_src, g_tem, g_result, imgproc.tm_ccorr); // // Método de correspondência relacionado // imgproc.matchtemplate (g_src, g_tem, g_result, imgproc.tm_sqdiff); // // Método de correspondência de variância quadrada: Este método usa variação quadrada para corresponder; O melhor valor de correspondência é 0; Quanto pior a partida, maior o valor da correspondência. // imgproc.matchtemplate (g_src, g_tem, g_result, imgproc.tm_ccorr_normed); // // Método de correspondência de correlação normalizado Core.Normalize (g_result, g_result, 0, 1, core.norm_minmax, -1, new Mat ()); Point MatchLocation = new Point (); Minmaxlocrsult mmmlr = core.minMaxLoc (g_result); MatchLocation = mmmlr.maxloc; // O uso do Maxloc aqui depende do algoritmo correspondente usado imgproc.rectangle (g_src, matchLocation, new Point (matchLocation.x + g_tem.cols (), matchLocation.y + g_tem.rows ()), novo escalar (0, 0, 0, 0); Imgcodec.imwrite ("f: //match.jpg", g_src); } Imagem de origem:
Imagem do modelo:
Resultado da correspondência:
O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.