opencv 模板匹配 掩膜 matchtemplate with mask

opencv的模板匹配功能是基于图片的匹配,必须横平竖直用这个长方形矩阵Mat去比较,而不能指定Mat图像中特定的不规则区域进行比较,也就是不能基于形状进行匹配。opencv的模板匹配功能是非常弱的。经过本人测试,目前最新的cv4.5.3版本仍旧不能完美实现带掩膜的形状模板匹配。

opencv的matchTemplate函数位于头文件imgproc内,用np++打开可以看到,2020年之前的版本,描述里写着只支持两种匹配method,#TM_SQDIFF and #TM_CCORR_NORMED, 也就是枚举的0和3, 但经过本人测试,该两种类型只是能加mask运行不报错而已,还必须在彩色图像下,而且并不能得到想要的结果。
19年12月版本的opencv源码注释

新版本2020年6月以后,包括2021年10月份最新下载的opencv4.5.3,模板匹配函数中每个method都已经支持mask,至少根据官方说明是这样的。但是经过本人亲自测试,cv4.5.3在其他method下,也仅仅是加mask不报错,但是运行出来的结果仍然是不能用的。
2020年6月以后的opencv中已经完善了mask功能

至于原因,是cv本身计算相关性的时候矩阵计算的限制导致的。详情见参考文献第一篇。

如果想实现基于形状而不是灰度,namely, 灰度不变性,的匹配,需要用其他商业视觉库,或者使用其他特征配准,比如canny,sift等。

相关参考文献:
stackoverflow:
2013年提出的掩膜模板匹配帖子,可能是该问题全球第一篇帖子
其他相关
源码探究

opencv论坛:
2013年,未解决
2018年,同样问题,只有0,3能run,效果差,未解决
2020年,问题关闭,其实只是run起来,效果差

另外:
opencv模板匹配源码

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值