开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 8468|回复: 14
收起左侧

[技术专题] Opencv学习笔记 模板匹配(找图) 算法

[复制链接]
结帖率:89% (79/89)
发表于 2021-8-17 17:58:23 | 显示全部楼层 |阅读模式   江苏省苏州市
本帖最后由 z13228604287 于 2021-8-17 18:33 编辑

模板匹配的作用在图像识别领域作用可大了。那什么是模板匹配?
模板匹配,就是在一幅图像中寻找另一幅模板图像最匹配(也就是最相似)的部分的技术。
其实模板匹配实现的思想也是很简单很暴力的,就是拿着模板图片在原图中从左上至右下依次滑动,直到遇到某个区域的相似度低于我们设定的阈值,那么我们就认为该区域与模板匹配了,也就是我们找到的位置,并把它标记出来。

QQ图片20210817175225.png
OpenCV中是通过MtachTemplate函数完成。
  
窗口程序集名保 留  保 留备 注
窗口程序集_启动窗口   
变量名类 型数组备 注
颜色标量声明一个保存BGR颜色的类

子程序名返回值类型公开备 注
_按钮1_被单击  
变量名类 型静态数组备 注
图像多维矩阵声明一个保存图像的类
模板多维矩阵声明一个保存图像的类
结果多维矩阵声明一个保存图像的类
置信度双精度小数型 
坐标二维坐标数据结构i声明一个保存匹配坐标的类
视觉_图像读取 (图像.指针, 编辑框1.内容, #读入_颜色 )
如果真 (图像. ())  ' 判断图像文件是否存在
信息框 (“请确认图像文件名称是否正确”, 0, “温馨提示!”, 取窗口句柄 ())
返回 ()
视觉_图像读取 (模板.指针, 编辑框2.内容, #读入_颜色 )
如果真 (模板. ())  ' 判断图像文件是否存在
信息框 (“请确认模板文件名称是否正确”, 0, “温馨提示!”, 取窗口句柄 ())
返回 ()
' 模板数据类型必须与图像数据类型一致,如果不一致可以使用“视觉_颜色空间转换”进行转换。
如果真 (模板.类型 () ≠ 图像.类型 ())
信息框 (“请确认模板与图像数据类型是否一致。”, 0, “温馨提示!”, 取窗口句柄 ())
返回 ()
如果真 (视觉_比较尺寸大于 (模板.指针, 图像.指针))
信息框 (“请确认模板尺寸是否大于图像尺寸。”, 0, “温馨提示!”, 取窗口句柄 ())
返回 ()
' 这类方法利用图像与模板各个像素差值的平方和来进行匹配,最好匹配为 0。 匹配越差,匹配值越大。
视觉_匹配模板 (图像.指针, 模板.指针, 结果.指针, #匹配_平方差 )
' 寻找匹配结果中的最小值以及坐标位置
视觉_最小最大位置 (结果.指针, 置信度, , 坐标, )
' 绘制最佳匹配区域
视觉_矩形Zi (图像.指针, 坐标.横坐标, 坐标.纵坐标, 模板. (), 模板. (), 颜色, 1, 8, 0)
视觉_放置文本i (图像.指针, “Trust:”到文本 (置信度), 坐标, #字体_衬线_简单, 1, 颜色, 1, 8, )
视觉_显示图像 (“小白鼠”, 图像.指针)
视觉_等待按键 (0)
子程序名返回值类型公开备 注
__启动窗口_创建完毕  
颜色.赋值 (0, 0, 255, 0)
子程序名返回值类型公开备 注
_按钮2_被单击  
变量名类 型静态数组备 注
图像多维矩阵声明一个保存图像的类
模板多维矩阵声明一个保存图像的类
结果多维矩阵声明一个保存图像的类
置信度双精度小数型 
坐标二维坐标数据结构i声明一个保存匹配坐标的类
视觉_图像读取 (图像.指针, 编辑框1.内容, #读入_颜色 )
如果真 (图像. ())  ' 判断图像文件是否存在
信息框 (“请确认图像文件名称是否正确”, 0, “温馨提示!”, 取窗口句柄 ())
返回 ()
视觉_图像读取 (模板.指针, 编辑框2.内容, #读入_颜色 )
如果真 (模板. ())  ' 判断图像文件是否存在
信息框 (“请确认模板文件名称是否正确”, 0, “温馨提示!”, 取窗口句柄 ())
返回 ()
' 模板数据类型必须与图像数据类型一致,如果不一致可以使用“视觉_颜色空间转换”进行转换。
如果真 (模板.类型 () ≠ 图像.类型 ())
信息框 (“请确认模板与图像数据类型是否一致。”, 0, “温馨提示!”, 取窗口句柄 ())
返回 ()
如果真 (视觉_比较尺寸大于 (模板.指针, 图像.指针))
信息框 (“请确认模板尺寸是否大于图像尺寸。”, 0, “温馨提示!”, 取窗口句柄 ())
返回 ()
' 这类方法利用图像与模板各个像素差值的平方和来进行匹配,最好匹配为 0。 匹配越差,匹配值越大。
视觉_匹配模板 (图像.指针, 模板.指针, 结果.指针, #匹配_平方差_标准 )
' 寻找匹配结果中的最小值以及坐标位置
视觉_最小最大位置 (结果.指针, 置信度, , 坐标, )
' 绘制最佳匹配区域
视觉_矩形Zi (图像.指针, 坐标.横坐标, 坐标.纵坐标, 模板. (), 模板. (), 颜色, 1, 8, 0)
视觉_放置文本i (图像.指针, “Trust:”到文本 (置信度), 坐标, #字体_衬线_简单, 1, 颜色, 1, 8, )
视觉_显示图像 (“小白鼠”, 图像.指针)
视觉_等待按键 (0)
子程序名返回值类型公开备 注
_按钮3_被单击  
变量名类 型静态数组备 注
图像多维矩阵声明一个保存图像的类
模板多维矩阵声明一个保存图像的类
结果多维矩阵声明一个保存图像的类
置信度双精度小数型 
坐标二维坐标数据结构i声明一个保存匹配坐标的类
视觉_图像读取 (图像.指针, 编辑框1.内容, #读入_颜色 )
如果真 (图像. ())  ' 判断图像文件是否存在
信息框 (“请确认图像文件名称是否正确”, 0, “温馨提示!”, 取窗口句柄 ())
返回 ()
视觉_图像读取 (模板.指针, 编辑框2.内容, #读入_颜色 )
如果真 (模板. ())  ' 判断图像文件是否存在
信息框 (“请确认模板文件名称是否正确”, 0, “温馨提示!”, 取窗口句柄 ())
返回 ()
' 模板数据类型必须与图像数据类型一致,如果不一致可以使用“视觉_颜色空间转换”进行转换。
如果真 (模板.类型 () ≠ 图像.类型 ())
信息框 (“请确认模板与图像数据类型是否一致。”, 0, “温馨提示!”, 取窗口句柄 ())
返回 ()
如果真 (视觉_比较尺寸大于 (模板.指针, 图像.指针))
信息框 (“请确认模板尺寸是否大于图像尺寸。”, 0, “温馨提示!”, 取窗口句柄 ())
返回 ()
' 这类方法采用模板和图像的互相关计算作为相似度的度量方法,所以较大的数表示匹配程度较高,0标识最坏的匹配效果。
视觉_匹配模板 (图像.指针, 模板.指针, 结果.指针, #匹配_相关 )
' 寻找匹配结果中的最小值以及坐标位置
视觉_最小最大位置 (结果.指针, , 置信度, , 坐标)
' 绘制最佳匹配区域
视觉_矩形Zi (图像.指针, 坐标.横坐标, 坐标.纵坐标, 模板. (), 模板. (), 颜色, 1, 8, 0)
视觉_放置文本i (图像.指针, “Trust:”到文本 (置信度), 坐标, #字体_衬线_简单, 1, 颜色, 1, 8, )
视觉_显示图像 (“小白鼠”, 图像.指针)
视觉_等待按键 (0)
子程序名返回值类型公开备 注
_按钮4_被单击  
变量名类 型静态数组备 注
图像多维矩阵声明一个保存图像的类
模板多维矩阵声明一个保存图像的类
结果多维矩阵声明一个保存图像的类
置信度双精度小数型 
坐标二维坐标数据结构i声明一个保存匹配坐标的类
视觉_图像读取 (图像.指针, 编辑框1.内容, #读入_颜色 )
如果真 (图像. ())  ' 判断图像文件是否存在
信息框 (“请确认图像文件名称是否正确”, 0, “温馨提示!”, 取窗口句柄 ())
返回 ()
视觉_图像读取 (模板.指针, 编辑框2.内容, #读入_颜色 )
如果真 (模板. ())  ' 判断图像文件是否存在
信息框 (“请确认模板文件名称是否正确”, 0, “温馨提示!”, 取窗口句柄 ())
返回 ()
' 模板数据类型必须与图像数据类型一致,如果不一致可以使用“视觉_颜色空间转换”进行转换。
如果真 (模板.类型 () ≠ 图像.类型 ())
信息框 (“请确认模板与图像数据类型是否一致。”, 0, “温馨提示!”, 取窗口句柄 ())
返回 ()
如果真 (视觉_比较尺寸大于 (模板.指针, 图像.指针))
信息框 (“请确认模板尺寸是否大于图像尺寸。”, 0, “温馨提示!”, 取窗口句柄 ())
返回 ()
' 这类方法采用模板和图像的互相关计算作为相似度的度量方法,所以较大的数表示匹配程度较高,0标识最坏的匹配效果。
视觉_匹配模板 (图像.指针, 模板.指针, 结果.指针, #匹配_相关_标准 )
' 寻找匹配结果中的最小值以及坐标位置
视觉_最小最大位置 (结果.指针, , 置信度, , 坐标)
' 绘制最佳匹配区域
视觉_矩形Zi (图像.指针, 坐标.横坐标, 坐标.纵坐标, 模板. (), 模板. (), 颜色, 1, 8, 0)
视觉_放置文本i (图像.指针, “Trust:”到文本 (置信度), 坐标, #字体_衬线_简单, 1, 颜色, 1, 8, )
视觉_显示图像 (“小白鼠”, 图像.指针)
视觉_等待按键 (0)
子程序名返回值类型公开备 注
_按钮5_被单击  
变量名类 型静态数组备 注
图像多维矩阵声明一个保存图像的类
模板多维矩阵声明一个保存图像的类
结果多维矩阵声明一个保存图像的类
置信度双精度小数型 
坐标二维坐标数据结构i声明一个保存匹配坐标的类
视觉_图像读取 (图像.指针, 编辑框1.内容, #读入_颜色 )
如果真 (图像. ())  ' 判断图像文件是否存在
信息框 (“请确认图像文件名称是否正确”, 0, “温馨提示!”, 取窗口句柄 ())
返回 ()
视觉_图像读取 (模板.指针, 编辑框2.内容, #读入_颜色 )
如果真 (模板. ())  ' 判断图像文件是否存在
信息框 (“请确认模板文件名称是否正确”, 0, “温馨提示!”, 取窗口句柄 ())
返回 ()
' 模板数据类型必须与图像数据类型一致,如果不一致可以使用“视觉_颜色空间转换”进行转换。
如果真 (模板.类型 () ≠ 图像.类型 ())
信息框 (“请确认模板与图像数据类型是否一致。”, 0, “温馨提示!”, 取窗口句柄 ())
返回 ()
如果真 (视觉_比较尺寸大于 (模板.指针, 图像.指针))
信息框 (“请确认模板尺寸是否大于图像尺寸。”, 0, “温馨提示!”, 取窗口句柄 ())
返回 ()
' 这种方法也叫做相关匹配,但是和上面的 CV_TM_CCORR 匹配方法还是有不通过的。简单的说,这里是把图像和模板都减去了各自的平均值,使得这两幅图像都没有直流分量。
视觉_匹配模板 (图像.指针, 模板.指针, 结果.指针, #匹配_归一化相关 )
' 寻找匹配结果中的最小值以及坐标位置
视觉_最小最大位置 (结果.指针, , 置信度, , 坐标)
' 绘制最佳匹配区域
视觉_矩形Zi (图像.指针, 坐标.横坐标, 坐标.纵坐标, 模板. (), 模板. (), 颜色, 1, 8, 0)
视觉_放置文本i (图像.指针, “Trust:”到文本 (置信度), 坐标, #字体_衬线_简单, 1, 颜色, 1, 8, )
视觉_显示图像 (“小白鼠”, 图像.指针)
视觉_等待按键 (0)
子程序名返回值类型公开备 注
_按钮6_被单击  
变量名类 型静态数组备 注
图像多维矩阵声明一个保存图像的类
模板多维矩阵声明一个保存图像的类
结果多维矩阵声明一个保存图像的类
置信度双精度小数型 
坐标二维坐标数据结构i声明一个保存匹配坐标的类
视觉_图像读取 (图像.指针, 编辑框1.内容, #读入_颜色 )
如果真 (图像. ())  ' 判断图像文件是否存在
信息框 (“请确认图像文件名称是否正确”, 0, “温馨提示!”, 取窗口句柄 ())
返回 ()
视觉_图像读取 (模板.指针, 编辑框2.内容, #读入_颜色 )
如果真 (模板. ())  ' 判断图像文件是否存在
信息框 (“请确认模板文件名称


i支持库列表   支持库注释   
cv(未知支持库)



链接:https://pan.baidu.com/s/1VSYkILerRQsoDiIhl-6eTQ
提取码:4ypk
复制这段内容后打开百度网盘手机App,操作更方便哦


发表于 2024-3-3 23:02:28 | 显示全部楼层   河北省廊坊市
阿萨安安
回复 支持 反对

使用道具 举报

发表于 2024-1-29 07:39:31 | 显示全部楼层   广东省中山市
感谢你的分享
回复 支持 反对

使用道具 举报

结帖率:50% (2/4)

签到天数: 3 天

发表于 2024-1-28 14:27:08 | 显示全部楼层   湖南省娄底市
没有提供支持库,基本没什么用
回复 支持 反对

使用道具 举报

发表于 2023-12-9 05:22:56 | 显示全部楼层   辽宁省丹东市
回复 支持 反对

使用道具 举报

签到天数: 1 天

发表于 2023-11-4 20:19:16 | 显示全部楼层   吉林省长春市
大佬牛6666666666666666666
回复 支持 反对

使用道具 举报

结帖率:0% (0/1)
发表于 2023-10-18 12:02:27 | 显示全部楼层   江苏省苏州市
6666666666666666666666666666
回复 支持 反对

使用道具 举报

结帖率:92% (34/37)
发表于 2023-8-3 22:40:13 | 显示全部楼层   山东省青岛市
能提供个cv.fne吗?谢谢
回复 支持 反对

使用道具 举报

发表于 2021-12-13 15:25:27 | 显示全部楼层   广东省中山市
感谢分享
回复 支持 反对

使用道具 举报

发表于 2021-12-4 09:53:29 | 显示全部楼层   天津市天津市
谢谢分享
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表