1.基础理论
模板匹配是找到图像中与模板图像相匹配的区域。通常是矩形,有时候要匹配的对象不是矩形时,可借助掩码 mask实现。
- 将
template逐像素的在source image上滑动,分别计算每个位置(x,y)的匹配度R,R表示的值可通过多种基准来计算。 - 常用基准

模板的宽高为 ω \omega ω, h h h,对于 TM_SQDIFF基准,模板匹配时找最小值,对于 TM_CCORR和 TM_CCOEFF是找其最大值。
目前只有 TM_SQDIFF和 TM_CCORR_NORMED支持使用 mask掩码。
2.matchTemplate API
#include <opencv2/imgcodecs.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/imgproc.hpp>
#include <iostream>
using namespace std;
bool use_mask;
cv::Mat img;
cv::Mat templ;
cv::Mat mask;
cv::Mat res;
const char *img_window = "Source";
const char *res_window = "Result";
int match_method;
int max_trackbar = 5;
void MatchingMethod(int, void *);
int main(int argc, char **argv)
{
if (argc < 3)
{
cout << "Not enough parameters" << endl;
cout << "Usage:\n" << argv[0] <

本文介绍了模板匹配技术的基础理论和OpenCV中的实现方法。通过在源图像上滑动模板图像并计算匹配度,可以定位到与模板相似的区域。文中详细解释了不同匹配基准的原理,并提供了使用OpenCV API进行模板匹配的示例代码。
最低0.47元/天 解锁文章
4223

被折叠的 条评论
为什么被折叠?



