¿Cómo utilizar matchShapes de OPENCV para igualar contornos?
El siguiente es el código de demostración:
#includes
#includes " opencv2/opencv.hpp "
usandonamespacestd
usandonamespacecv
intmain()
{
Matk=imread("E:/TestGit/8.jpg ", 0); p>
Matf
matk 1 = estoy leído(" E:/test git/9 . jpg ",
matf 1; >umbral (k, f, 50, 255, THRESH _ BINARY); // Binarizar la imagen
umbral (k1, f1, 50, 255, THRESH _ BINARY
); matcloserect = getStructuringElement(MORPH _ RECT, Size(3, 3)); //Generar operador estructural
morphologyEx(f, f, MORPH_OPEN, close rect);
morphologyEx( f1 , f1, MORPH_OPEN, close rect); //Realiza operaciones morfológicas.
Matdst=Mat::zeros(k.rows,k.cols,CV_8uc3);
matdst 1 = Mat::zeros(k1.rows,k1. cols, CV_8uc 3
vector gtw, w 1;
jerarquía de vectores, nivel 1
findContours(f,w,jerarquía,RETR_CCOMP, CHAIN _ APPROX _ SIMPLE); //Seleccionar elementos del esquema
findContours(f1, w1, jerarquía1, RETR_CCOMP, CHAIN _ APPROX _ SIMPLE);
FileStoragefs("f.dat ", archivo); almacenamiento:: WRITE);
Escala completa
intidx = 0;
doubleffff=matchShapes(w[0], w1[0], CV_CONTOURS_MATCH_I3, 1.0 ); //Realizar coincidencia de contornos
Estándar: :cout
System("pause");
return0
} p>
De esta forma conseguimos la extracción y coincidencia de los bordes del contorno, que satisface las necesidades. Diferentes operadores tienen diferentes métodos de operadores coincidentes.