图像处理之模板匹配

来源:互联网 发布:广州java架构师培训 编辑:程序博客网 时间:2024/05/17 05:19

Opencv提供的模板匹配方法:

/* Template matching methods */enum{    CV_TM_SQDIFF        =0,    CV_TM_SQDIFF_NORMED =1,    CV_TM_CCORR         =2,    CV_TM_CCORR_NORMED  =3,    CV_TM_CCOEFF        =4,    CV_TM_CCOEFF_NORMED =5};

#include "cv.h"#include "highgui.h"using namespace cv;using namespace std;int main(int argc,char *argv[]){Mat temp,search,result,resultU8;temp=imread("temp.jpg");search=imread("search.jpg");result.create((search.rows-temp.rows+1),(search.cols-temp.cols+1),CV_32FC1);matchTemplate(search,temp,result,CV_TM_SQDIFF);normalize(result,result,0,1,NORM_MINMAX);//convertScaleAbs(result,resultU8);或转CV_8UC1图像imshow("result",result);double minVal,maxVal;Point minIdx,maxIdx;minMaxLoc(result,&minVal,&maxVal,&minIdx,&maxIdx);cout<<"min:"<<minIdx<<":"<<minVal<<";max:"<<maxIdx<<":"<<maxVal<<endl;rectangle(search,minIdx,Point(minIdx.x+temp.cols-1,minIdx.y+temp.rows-1),Scalar(0,255,255),2);imshow("search",search);waitKey(0);destroyAllWindows();return 0;}
注意,本实验采用是直接从search图像截取模板,这样匹配效果是很好的,实际的模板都是大众化。

尽管这样,CV_TM_CCORR方法获取的结果是错误的!

下面展示程序效果:(其他两类方法的匹配的位置应有最大值)

             



0 0
原创粉丝点击