龙空技术网

基于模板图片的相似区域识别

桃杂记 133

前言:

如今姐妹们对“opencv 相似图匹配搜索”都比较着重,各位老铁们都需要学习一些“opencv 相似图匹配搜索”的相关文章。那么小编同时在网络上搜集了一些对于“opencv 相似图匹配搜索””的相关内容,希望咱们能喜欢,各位老铁们一起来学习一下吧!

实验名称:基于模板图片的相似区域识别

实验目的:识别模板图片在目标图片中的相似部分

实验设计或方案:采用开源框架OpenCvSharp,二维码图片为目标对象,通过对图像进行二值化处理后,查找出图像轮廓。

实验时间:2022-04-08

实验材料:电脑+数字图片

实验方法:通过开源的OpenCvSharp框架,用同一个模板来匹配多个相似目标,函数返回为多个目标对应的分数。识别相似度99%以上的区域,将识别结果标识显示于原图上。

实验过程:学习OpenCvSharp的基本使用方法,需要学习掌握的函数(MatchTemplate,MinMaxLoc)

观察指标:完整描绘出图片中和模板图片中相似度超过99%的所有区域。

实验结果和结果分析:成功识别出图片中和模板图片中相似度超过99%的所有区域,并且在原图标识出来。

模板图片:

模板图片

识别效果图:

识别后效果图

核心函数“MinMaxLoc”的说明资料,自于网络检索摘抄。

函数原型:

void minMaxLoc( const Mat& src, double* minVal, double* maxVal=0, Point* minLoc=0, Point* maxLoc=0, const Mat& mask=Mat() );

void minMaxLoc(const MatND& src, double* minVal, double* maxVal, int* minIdx=0, int* maxIdx=0, const MatND& mask=MatND() );

void minMaxLoc(const SparseMat& src, double* minVal, double* maxVal, int* minIdx=0, int* maxIdx=0);

参数解释

参数1:InputArray类型的src,输入单通道数组(图像)。

参数2:double类型的minVal,返回最小值的指针。若无须返回,此值置为NULL。参数3:double类型的maxVal,返回最大值的指针。若无须返回,此值置为NULL。

参数4:Point类型的minLoc,返回最小位置的指针(二维情况下)。若无须返回,此值置为NULL。参数5:Point类型的maxLoc,返回最大位置的指针(二维情况下)。若无须返回,此值置为NULL。

参数6:InputArray类型的mask,用于选择子阵列的可选掩膜。

说明:

1 minMaxLoc寻找矩阵(一维数组当作向量,用Mat定义) 中最小值和最大值的位置.

2 参数若不需要,则置为NULL或者0,即可.

3 minMaxLoc针对Mat和MatND的重载中 ,第5个参数是可选的(optional),不使用不传递即可.

PS:minMaxLoc针对单通道图像,minMaxIdx则不限制(不过输出的坐标会变成三维)。

标签: #opencv 相似图匹配搜索