C++ OpenCV模版匹配

Posted 微卡智享

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++ OpenCV模版匹配相关的知识,希望对你有一定的参考价值。

模版匹配

 模板匹配(TemplateMatching)就是在一幅图像中寻找和模板图像(template)最相似的区域,该方法原理简单计算速度快,能够应用于目标识别,目标跟踪等多个领域。

  • 模版匹配就是在整个图像区域发现与给定子图像匹配的小块区域

  • 模版匹配必须要有一个模版图像T(给定的子图像),还需要一个待检测的图像S(源图像)

  • 在待检测的图像上,从左到右,从上到下计算模版图像与重叠子图像的匹配度,匹配度越大,两者相同的可能性就越大


相关API  matchTemplate

MatchTemplate( InputArrray image, InputArray templ,

                              OutputArray result,int method );

Image  //源图像

Templ  //模板图像

Result  //输出结果  必须是单通道32位浮点数,假设源图像WxH,模版图像

              wxh,到结果必须为W-w+1,H-h+1的大小

Method   //计算匹配程度的方法


  关于匹配方法,使用不同的方法产生的结果的意义可能不太一样,有些返回的值越大表示匹配程度越好,而有些方法返回的值越小表示匹配程度越好

关于参数 method:

  • CV_TM_SQDIFF平方差匹配法:该方法采用平方差来进行匹配;最好的匹配值为0;匹配越差,匹配值越大。

  • CV_TM_CCORR相关匹配法:该方法采用乘法操作;数值越大表明匹配程度越好。

  • CV_TM_CCOEFF相关系数匹配法:1表示完美的匹配;-1表示最差的匹配。

  • CV_TM_SQDIFF_NORMED归一化平方差匹配法

  • CV_TM_CCORR_NORMED归一化相关匹配法

  • CV_TM_CCOEFF_NORMED归一化相关系数匹配法


代码演示

新建一个项目opencv-0022,配置属性(),然后在源文件写入#include和main方法

C++ OpenCV模版匹配

C++ OpenCV模版匹配


模版匹配

因为方法有六种,我们在图像上加了个TrackBar,再定义一个方法用于实现TrackBar的事件

C++ OpenCV模版匹配

C++ OpenCV模版匹配

然后是实现Match_Void的方法

C++ OpenCV模版匹配

C++ OpenCV模版匹配

C++ OpenCV模版匹配


运行后的效果

C++ OpenCV模版匹配

可以看到左边是我们的源图,中间的我们的要匹配的图,运行起来后直接就匹配到对应的图了


通过改变上面的算法类型,得到不同的效果

C++ OpenCV模版匹配






-END-




以上是关于C++ OpenCV模版匹配的主要内容,如果未能解决你的问题,请参考以下文章

OpenCV在限定的ROI中进行模版匹配问题,求指点!!

OpenCV2马拉松第13圈——模版匹配

实时模板匹配 - OpenCV、C++

OpenCV C++案例实战二十四《多目标匹配》

求C++中利用opencv计算轮廓图像傅里叶描述子的代码

opencv模板匹配查找图像(python)