OpenCV模板检测
2023-09-14 09:05:26 时间
1、概述
案例:使用OpenCV的模板检测在场景图中找出模板图像,并将其框出来。
简单理解概念:模板匹配其实就是在整个场景图像中发现与给定子图像(模板图像)匹配的小块区域。可以理解为找对象
模板匹配方法API函数介绍
matchTemplate(
InputArray image,// 源图像,必须是8-bit或者32-bit浮点数图像
InputArray templ,// 模板图像,类型与输入图像一致
OutputArray result,// 输出结果,必须是单通道32位浮点数,假设源图像WxH,模板图像wxh,则结果必须为W-w+1, H-h+1的大小。,
int method,//使用的匹配方法 :
InputArray mask=noArray()//(optional) )
matchTemplate函数中的method参数中提供了6种匹配度量方法,如下:
(1).平方差匹配法CV_TM_SQDIFF
(2)归一化平方差匹配法CV_TM_SQDIFF_NORMED
(3)相关匹配法CV_TM_CCORR
(4)归一化相关匹配法CV_TM_CCORR_NORMED
(5)系数匹配法CV_TM_CCOEFF
(6)化相关系数匹配法CV_TMCCOEFF_NORMED
模板匹配使用步骤:
1.载入场景图像及模板图像
2.将场景图像及模板图像转换Wie灰度图(因为原图像只支持8bit和32bit浮点数)
3.创建一个画布用来输出匹配结果
4.使用matchTemplate函数进行匹配
5.将执行结果result进行归一化处理
6.获取最大或最小匹配系数,因为下面例子中我们使用的是平方差,所以要取最小值,值越小越好
7.开始绘制矩形区域
8.显示绘制矩形区域后的图像
2、代码示例
//【1】场景图片及模板图像
Mat src = imread(filePath);
Mat src_clone = src.clone();
Mat src_template = imread("C:\\Users\\wei.yang\\Downloads\\opencv_res\\aoteman_template.jpg");//模板图像
imshow("src_template",src_template);
//【1】转换灰度图图像
cvtColor(src,src,COLOR_BGR2GRAY);
cvtColor(src_template,src_template,COLOR_BGR2GRAY);
//【3】创建一个画布用来输出匹配结果
Mat result;
int width = src.cols-src_template.cols+1;
int height = src.rows-src_template.rows+1;
result.create(Size(width,height),CV_32FC1);
//【4】执行模板陪
//执行模板匹配
matchTemplate(src,src_template,result,TM_SQDIFF_NORMED);
//【5】执行归一化
normalize(result,result,0,1,NORM_MINMAX);
//【6】获取最小匹配系数(有可能使用最大或者最小,根据我们所使用的的method不同而不同)
double minValue,maxValue;
Point minLoc,maxLoc,matchLoc;
minMaxLoc(result,&minValue,&maxValue,&minLoc,&maxLoc,Mat());
matchLoc = minLoc;
//【7】绘制矩形区域
rectangle(src_clone,matchLoc,Point(matchLoc.x+src_template.cols,matchLoc.y+src_template.rows),Scalar(0,51,0),2,LINE_AA);
// rectangle(result,Rect(matchLoc.x,matchLoc.y,src_template.cols,src_template.rows),Scalar(0,0,255),2,LINE_AA);
//【显示绘制好的图像】
imshow("src_clone",src_clone);
// imshow("result",result);
3、图片示例
本文福利,莬费领取Qt开发学习资料包、技术视频,内容包括(C++语言基础,Qt编程入门,QT信号与槽机制,QT界面开发-图像绘制,QT网络,QT数据库编程,QT项目实战,QSS,OpenCV,Quick模块,面试题等等)↓↓↓↓↓↓见下面↓↓文章底部点击莬费领取↓↓
相关文章
- opencv----模板匹配
- Android版OpenCV图像处理技术亲自验证[十六]之相机特效
- OpenCV每日函数 matchTemplate模板匹配函数
- Atitit opencv模板匹配attilax总结
- Atitit opencv模板匹配attilax总结
- Atitit opencv 模板匹配
- OpenCV-Python Feature2D 特征点检测 (SIFT,SURF)
- 为什么会提示cv2.error: OpenCV(4.1.1)error: (-215:Assertion failed) ni == ni1错误
- 在OpenCV里实现模板匹配
- 【OpenCV 例程200篇】57. 低通高斯滤波器
- 【OpenCV 例程200篇】63. 图像锐化之 Laplacian 算子
- 【OpenCV 例程 300 篇】111. 雷登变换反投影重建图像
- 【OpenCV 例程300篇】207. Photoshop 色阶自动调整算法
- 人脸检测实战终极:使用 OpenCV 和 Python 进行人脸对齐
- 【图像处理OpenCV(C++版)】——4.4 对比度增强之伽马变换
- 【图像处理OpenCV(C++版)】——Visual Studio 2015配置OpenCV