c++ opencv 模板匹配
·
#include<iostream>
#include<opencv2\opencv.hpp>
using namespace std;
using namespace cv;
cv::Mat Template_matching(cv::Mat src, cv::Mat templ)
{
cv::Mat ftmp; cv::Mat corp_result;
double minVal; double maxVal; cv::Point minLoc; cv::Point maxLoc;
cv::Point matchLoc;
matchTemplate(src, templ, ftmp, 1);//有6种匹配方式,这里的1 是其中一种
normalize(ftmp, ftmp, 0, 1, cv::NORM_MINMAX, -1, cv::Mat());
minMaxLoc(ftmp, &minVal, &maxVal, &minLoc, &maxLoc); //找到最佳匹配点
//rectangle(src, cv::Rect(minLoc.x, minLoc.y, templ.cols, templ.rows), 2, 8, 0); //在原图上框出来
corp_result = src(cv::Rect(minLoc.x, minLoc.y, templ.cols, templ.rows));
return corp_result;
}
int main() {
//模板匹配
cv::Mat src = imread("1.bmp", 1); // 待匹配的图片,原图
cv::Mat templ = imread("2.bmp", 1);// 模板图
cv::Mat corp_result = Template_matching(src, templ);
imwrite("F:/123.bmp", corp_result);
}
更多推荐
所有评论(0)