Template Matching模板匹配python开发实践

文章介绍了模板匹配这一基础目标检测方法,通过在原图像上滑动模板并计算度量来寻找匹配区域。使用`match_template`函数实现匹配,并展示了不同复杂程度的实例,包括在水底图片上的应用,证明了模板匹配的有效性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

其实模板匹配在我看来就是基础版本的目标检测,做惯了深度学习方式的目标检测,猛地回头反而觉得模板匹配这种方法挺有意思的,今天正好得闲就想着来简单实践一下。

首先简单回顾一下什么是模板匹配:

什么是模板匹配?
你有一副原图像,还有一小块模板(很小的图像,有可能来源于原图像),通过模板找出原图中和模板相似的位置。
如何实现匹配?
原图(I):我们需要在上面找到和模板匹配的图像
模板(T):一小块图像,是我们需要在原图中找到和它相似的区域位置的图像
方法:一直用模板在原图上进行移动,从左到右,从上到下,每移动一个像素,便去在模板区域内计算 “一种度量(度量)”,然后将"度量"结果存到Mat 对象中,最大值(或者最小值,根据计算方法不同)的位置,就是原图中最佳的匹配位置

先来简单看下效果:

我们想在中间图片上面找到跟左侧目标图片最为相似的区域这样的问题件就可以使用目标匹配的方式来做,核心方法为:

match_template(template, target)

其中:

template表示目标图片

target表示目标图片

接下来就是绘图:

fig = plt.figure(figsize=(8, 3))
ax1 = plt.subplot(1, 3, 1)
ax2 = plt.subplot(1, 3, 2)
ax3 = plt.subplot(1, 3, 3, sharex=ax2, sharey=ax2)
ax1.imshow(coin, cmap=plt.cm.gray)
ax1.set_axis_off()
ax1.set_title('template')
ax2.imshow(image, cmap=plt.cm.gray)
ax2.set_axis_off()
ax2.set_title('image')
hcoin, wcoin = coin.shape
rect = plt.Rectangle((x, y), wcoin, hcoin, edgecolor='r', facecolor='none')
ax2.add_patch(rect)
ax3.imshow(result)
ax3.set_axis_off()
ax3.set_title('`match_template`\nresult')

用同样的方法我们也可以尝试一些更为复杂的例子,如下:

【模板图片】

【目标图片】

计算结果如下:

【模板图像】

【目标图像】

【计算效果】

试试更加复杂的水底图片。

【模板图像】

【目标图片】

【计算效果】

还是很不错的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Together_CZ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值