Red de conocimiento informático - Aprendizaje de programación - opencv viene con un algoritmo de coincidencia de plantillas listo para usar.

opencv viene con un algoritmo de coincidencia de plantillas listo para usar.

El método es el siguiente:

Rutina para la comparación de imágenes usando la biblioteca SIFT en OPENCV

// opencv_empty_proj.cpp: define el punto de entrada de la aplicación de consola.

//

#include "stdafx.h"

#include

#include

#include

#include

# incluir

usando el espacio de nombres std;

usando el espacio de nombres cv;

int _tmain(int argc, _TCHAR* argv[])

{

const char* imagename = "img.jpg" )

//Leer imagen del archivo

Mat img = imread(imagename) ;

Mat img2 = imread("img2.jpg");

//Si falla la lectura de la imagen

if( img. vacío())

{

fprintf(stderr, "No se puede cargar la imagen %s\n", imagename);

return -1; p>

}

if(img2.empty())

{

fprintf( stderr, "No se puede cargar la imagen %s\ n" , nombreimagen);

return -1;

}

//muestra la imagen

imshow("imagen antes", img

imshow(" imagen2 antes", img2

/Detección de funciones de filtro

SiftFeatureDetector siftdtc;

vectorkp1,kp2;

siftdtc.detect( img,kp1) ;

Mat outimg1;

drawKeypoints(img,kp1,outimg1);

imshow("image1 keypoints",outimg1);

KeyPoint kp;

vector::iterador itvc;

for(itvc=kp1.begin();itvc!=kp1.end();itvc++)

{

cout<< "ángulo:"<& lt;itvc->ángulo<<"\t"<class_id<<"\t"<octava< ;<"\t"<pt<<"\t"<respuesta<

}

siftdtc.detect(img2,kp2 );<

/p>

Mat outimg2;

drawKeypoints(img2,kp2, outimg2);

imshow("image2 keypoints",outimg2);

SiftDescriptorExtractor Extractor;

Mat descriptor1,descriptor2;

BruteForceMatcher> comparador;

vector coincide;

Mat img_matches;

extractor.compute(img,kp1,descriptor1);

extractor.compute(img2,kp2,descriptor2);

imshow(" desc ",descriptor1);

cout<

drawMatches(img,kp1,img2,kp2,matches,img_matches);

imshow("matches",img_matches);

//Esta función espera a que se presione una tecla y regresa cuando se presiona cualquier tecla en el teclado

waitKey ( );

devuelve 0;

}