El origen del algoritmo de coincidencia de plantillas en opencv
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.
//
#Incluir " stdafx.h "
# incluir & ltopencv 2/opencv & gt; incluir & ltopencv 2/características 2d/características 2d .
# incluir & ltopen cv2/no gratuito/no gratuito HPP & gt;
# incluir & ltopencv 2. /legacy/legacy . HPP>
# include & ltvector & gt
Usar espacio de nombres std
Usar espacio de nombres cv;
int _tmain (int argc, _TCHAR* argv[])
{
const char * imagename = " img.jpg
//Desde archivo Leer imagen
mat img = im read(imagename);
mat img 2 = im read(" img 2 . jpg ");
// Si falla la lectura de la imagen,
if(img.empty())
{
fprintf(stderr, "No se puede cargar la imagen %s\n ", imagename); p>
return-1;
}
if(img2.empty())
{
fprintf(stderr , "No se puede cargar la imagen %s\n ", imagename
return-1
}
//Mostrar imagen
imshow("imagen anterior", img);
imshow("imagen2 anterior", img 2);
//detección de características de tamizado
SiftFeatureDetector
Vector <Importante>kp1,kp2
siftdtc.detect(img, KP 1);
mat outimg 1;
p>drawKeypoints( img, kp1, outimg 1);
imshow("imagen1 puntos clave", outimg 1);
Punto clave
Vector & ltConsejos importantes& gtIterator itvc;
for(itvc = KP 1 . comenzar(); itvc! = KP 1 . -& gt; clase _ id & lt& lt" \ t " & lt& ltitvc-& gt; octava & lt& lt" \ t " & lt& ltitvc-& gt;pt & lt& lt" \ t " & lt& ltitvc-& gt; ; respuesta & lt& ltendl
}
siftdtc.detect(img2, kp2);
Mat outimg2
Dibuja puntos clave ( img2 , kp2, outi mg 2);
imshow("Imagen 2 puntos clave", outi mg 2
Extractor
Mat descriptor1, descriptor2<); /p>
BruteForceMatcher & ltL2<float & gt& gtmatcher
Vector & ltDMatch & gtmatch;
Mat img _matches
extractor.compute( img, kp1 , descriptor 1);
extractor.compute(img2, kp2, descriptor 2);
imshow("desc ", descriptor 1
cout &); lt& ltendl & lt& ltdescriptor 1 & lt;& ltendl
matcher.match(descriptor 1, descriptor 2, coincidencias
drawMatches(img, kp1, img2, kp2, Coincidencias), img_matches);
imshow("matches ",img_matches);
//Esta función espera la tecla y luego regresa presionando cualquier tecla del teclado.
tecla de espera();
Devuelve 0;
}