OpenCV图像处理技术(Python)——图像匹配与霍夫变换

© Fu Xianjun. All Rights Reserved

一、模板匹配

模板匹配是指在当前图像A内寻找与图像B最相似的部分,一般将图像A称为输入图像,将图像B称为模板图像。

1.模板匹配基础

语法格式:

result = cv2.matchTemplate(iamge,temp1,method[,mask])

· image为原始图像,必须是8位或者32位的浮点型图像。
· temp1为模板图像。它的尺寸必须小于或等于原始图像,并且与原始图像具有同样的类型。
· method为匹配方法。该参数通过TemplateMatchModes实现,有6种可能的值。

method的值以及含义

参数值 对应数值 说明
cv2.TM_SQDIFF 0 以差方位依据进行匹配。若完全匹配,则结果为零;若不匹配,则会得到一个很大的值
cv2.TM_SQDIFF_NORMED 1 标准(归一化)平方差匹配
cv2.TM_CCORR 2 相关匹配,这类方法将模板图像与输入图像相乘,如果乘积较大,表示匹配程度较高;如果乘积为0,则表示匹配效果最差
cv2.TM_CCORR_NORMED 3 标准(归一化)相关匹配
cv2.TM_CCOEFF 4 相关系数匹配,这类方法将模板图像与其均值相对值,和输入图像与其均值的相关值进行匹配。1表示完美,-1表示糟糕的匹配,0表示没有任何相关性(随机序列)
cv2.TM_CCOEFF_NORMED 5 标准(归一化)相关系数匹配

· mask为模板图像掩模。它必须和模板图像temp1具有相同的类型大小。通常情况下该值使用默认值即可。当前,该参数仅支持cv2.TM_SQDIFF和cv2.TM_CCORR_NORMED两个值。

2.多模板匹配

1.导入需要的库
代码如下:

import cv2
import numpy as np
#Matplotlib是RGB
import matplotlib.pyplot as plt
%matplotlib inline 

#定义显示图片的函数,避免重复代码
def cv_show(name, img):
    cv2.imshow(name, img)
    cv2.waitKey()
    cv2.destroyAllWindows()

2.读取模板图片
代码如下:

#读取模板图片
template = cv2.imread("lena_eye.jpg")
cv_show("template",template)

3.读取检测图片
代码如下:

img = cv2.imread("lena.jpg")
cv_show("img", img)

4.获取模板的大小
代码如下:

#获取到我们模板的大小h,w
h, w = template.shape[:2]

4.模板匹配
代码如下:

#开始模板匹配过程(采用计算归一化平方不同,计算值越接近0,越相关)
res = cv2.matchTemplate(img, template, cv2.TM_SQDIFF_NORMED)
min_val, max_val
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值