生活百科知识

经验知识首页 > 出国游 > 详细经验讲解内容页

[视频]【图像处理】基于python的模版匹配算法

关于捡漏【图像处理】基于python的模版匹配算法,期待您的经验分享,你就是当代的活雷锋,太感谢了 !
无情天魔精致 2019-01-17 09:37:25 46135人看过 分享经验到微博

更新:2024-04-02 08:24:11自创经验

来自前程无忧https://www.51job.com/的优秀用户无情天魔精致,于2019-01-17在生活百科知识平台总结分享了一篇关于“【图像处理】基于python的模版匹配算法过度消费”的经验,非常感谢无情天魔精致的辛苦付出,他总结的解决技巧方法及常用办法如下:

本文来学习模版匹配的初等方法。从大图里面裁剪出一个小图片,然后要求在大图里面标注出小图的位置。

工具/原料

电脑pythonopencv模块

方法/步骤

1/6分步阅读

给定大图,截取小图,并读取图片。

import cv2

img=cv2.imread('0.png')

pic=cv2.imread('1.png')

请点击图片,查看大图效果。

[图][图]2/6

如果把图片直接读取为灰度图,可以节省计算时间:

import cv2

img=cv2.imread('0.png',0)

pic=cv2.imread('1.png',0)

原图是没有右下角的水印的。

[图][图]3/6

这里只给出模版匹配的最初等的方法,把模版放到原图,逐点移动,直到找准最佳匹配位置。

先给出一个计数器,用来记录不同位置的匹配效果。

import numpy as np

u,v=img.shape[:2]

p,q=pic.shape[:2]

c=np.zeros((u-p,v-q))

[图]4/6

用for循环进行匹配:

for i in range(u-p):

for j in range(v-q):

n=img[i:p+i,j:q+j]-pic

n=np.sum(n**2)

c[i,j]=n

这个过程用时间比较长,多达100秒。

[图]5/6

计数器里面,最小值的位置,就是最佳匹配位置。

上图中有一个黑色点,就是最佳匹配点。

for i in range(u-p):

for j in range(v-q):

if c[i,j]==np.min(c):

print(i,j)

[图]6/6

在原图中标注出模版的位置:

img=cv2.imread('0.png')

cv2.rectangle(img,(50,201),(50+q,201+p),(0,0,255),2)

cv2.imwrite('4.jpg',img)

[图]

编辑于2019-01-17,内容仅供参考并受版权保护

经验备注

我发现了这篇经验很有用:你也认同《【图像处理】基于python的模版匹配算法》的经验分享有价值,就请和朋友们一起分享吧。另外,【图像处理】基于python的模版匹配算法的经验内容仅供参考,如果您需解决具体问题(尤其法律、医学等领域),建议您详细咨询相关领域专业人士。经验知识实用生活指南-解决你所有的生活难题!未经许可,谢绝转载。

本文网址:https://www.5058.cn/article/2d5afd69066d6885a2e28ed8.html

下一篇