模板匹配,顾名思义,即在一副图像中寻找和另一幅图像最相似(匹配)的部分。前段时间做实验
用到了模板匹配算法,之前作的笔记先放到博客上.
1、用到的函数和参数解释
1.1 Rect()函数
Mat Image = imread(“0.png”)
Mat templateimage = Image(Rect(x, y, n,m));
即我们先定位到坐标为(x,y)这个像素点,然后以这个点为起点,往右下划出一个n列m行的区域
参考博客:https://blog.csdn.net/weixin_30954607/article/details/95317294
1.2 nameWindow()函数
namedWindow( image_window, CV_WINDOW_AUTOSIZE ); // 窗口名称,窗口标识 CV_WINDOW_AUTOSIZE是自动调整窗口大小以适应图片尺寸
namedWindow( result_window, CV_WINDOW_AUTOSIZE );
创建窗口。第一个参数是窗口名称,第二个窗口是int类型的Flag可以填写以下的值:
WINDOW_NORMAL //设置了这个值,用户便可以改变窗口的大小(没有限制)
WINDOW_AUTOSIZE //如果设置了这个值,窗口大小会自动调整以适应所显示的图像,并且不能手动改变窗口大小
1.3 createTrackba()函数
createTrackbar(const string& trackbarname, const string& winname,
int* value, int count,
TrackbarCallback onChange = 0,
void* userdata = 0);
参数1. trackbarname:滑动空间的名称;
参数2. winname:滑动空间用于依附的图像窗口的名称;
参数3. value:初始化阈值;
参数4. count:滑动控件的刻度范围;
参数5. TrackbarCallback是回调函数.
1.4 matchTemplate()函数
matchTemplate( img, templ, result, match_method );
即模板匹配函数,参数含义分别为:待匹配图像,模版图像,输出结果图像,匹配方法.
匹配方法就是采取何种计算方式来衡量模板图像和代匹配图像某部分的相似(匹配)程度.
opencv提供了6种方法:
平方差匹配法 CV_TM_SQDIFF
归一化平方差匹配法 CV_TM_SQDIFF_NORMED
相关匹配法 CV_TM_CCORR
归一化相关匹配法 CV_TM_CCORR_NORMED
系数匹配法 CV_TM_CCOEFF
化相关系数匹配法 CV_TMCCOEFF_NORMED
需要注意的是对于方法SQDIFF和SQDIFF_NORMED两种方法来讲,越小的值就有着更高的匹配结果,而其余的方法则是数值越大匹配效果越好.
参考博客:https://blog.csdn.net/keith_bb/article/details/70050080
1.5 normalize()归一化函数
normalize( result, result, 0, 1, NORM_MINMAX, -1, Mat() );
参数含义:输入数组,输出数组,normalize的最小值,normalize的最大值,归一化类型,当type为负数的时候输出的type和输入的type相同.
归一化函数是为了后面数据处理的方便,其次是保证程序运行时收敛加快.