下面是演示代碼:
#包括
#包含" opencv2/opencv.hpp "
usingnamespacestd
usingnamespacecv
intmain()
{
Matk=imread("E:/TestGit/8.jpg ",0);
Matf
matk 1 = im read(" E:/test git/9 . jpg ",0);
matf 1;
threshold(k,f,50,255,THRESH _ BINARY);//將圖像二值化
threshold(k1,f1,50,255,THRESH _ BINARY);
matcloserect = getStructuringElement(MORPH _ RECT,Size(3,3));//生成結構運算符
morphologyEx(f,f,MORPH_OPEN,close rect);
morphologyEx(f1,f1,MORPH_OPEN,close rect);//執行形態學運算。
Matdst=Mat::zeros(k.rows,k.cols,CV _ 8uc 3);
matdst 1 = Mat::zeros(k 1 . rows,k1.cols,CV _ 8uc 3);
vector & gtw,w 1;
vectorhierarchy,等級1;
findContours(f,w,hierarchy,RETR_CCOMP,CHAIN _ APPROX _ SIMPLE);//選擇大綱元素
findContours(f1,w1,hierarchy1,RETR_CCOMP,CHAIN _ APPROX _ SIMPLE);
FileStoragefs("f.dat ",file storage::WRITE);
滿量程
intidx = 0;
doubleffff=matchShapes(w[0],w1[0],CV_CONTOURS_MATCH_I3,1.0);//執行輪廓匹配
標準::cout
系統(“暫停”);
return0
}
這樣,我們得到的輪廓邊緣提取和匹配,滿足了需要。不同的運算符有不同的匹配運算符方法。