Python 机器视觉 - 基于opencv图像模板匹配实现的简单人脸匹配实例演示,matchTemplate的6大模板匹配算法

简介: Python 机器视觉 - 基于opencv图像模板匹配实现的简单人脸匹配实例演示,matchTemplate的6大模板匹配算法

     

OpenCV 图像匹配算法

第一章:图像模板匹配演示

① 效果展示1

这是我要进行匹配的图片:

image.png

匹配后的效果:

image.png

② 效果展示2

这是我要进行匹配的图片:

image.png

匹配后的效果:

image.png

③ 实现源码

实现源码如下:

这里使用了 CV_TM_SQDIFF 算法,调用方法为 cv.TM_SQDIFF

import cv2 as cv
def template_matching(img_match, img, arithmetic_model):
    '''
     【作用】
      进行图片模板匹配
     【参数1】
      模板图片
     【参数2】
      进行匹配的图片
     【参数3】
      算法模型
     【返回】
    '''
    # 进行模板匹配
    result = cv.matchTemplate(img, img_match, arithmetic_model)
    # 获取最小最大匹配值,还有对应的坐标
    min_value, max_value, min_coordinate, max_coordinate = cv.minMaxLoc(result)
    # 默认最佳最大值,当算法为CV_TM_SQDIFF或CV_TM_SQDIFF_NORMED时改为最小值
    best_coordinate = max_coordinate;
    if(arithmetic_model == cv.TM_SQDIFF or arithmetic_model == cv.TM_SQDIFF_NORMED):
        best_coordinate = min_coordinate;
    # 获取匹配图片的高和宽
    m_height, m_width = img_match.shape[:2]
    # 矩形的起始点和结束点
    r_start = best_coordinate
    r_end = (best_coordinate[0] + m_width, best_coordinate[1] + m_height);
    # 矩形的颜色和线的宽度
    r_color = (0, 0, 0)
    r_line_width = 2
    # 绘制矩形并展示
    cv.rectangle(img, r_start, r_end, r_color, r_line_width)
    cv.imshow("Xiao Lanzao", img)
# 传入图片数据
img_match = cv.imread("./image/baidu-ico.png")
img = cv.imread("./image/baidu-sousuo.png")
template_matching(img_match, img, cv.TM_SQDIFF)
cv.waitKey(0)
cv.destroyAllWindows()

第二章:六大模板匹配算法

在一些复杂的场景下,从简单的平方差算法到更复杂的相关系数算法,匹配的准确率会不断提高,但是计算量也同时增加了。

① CV_TM_SQDIFF【平方差匹配】

平方差匹配:CV_TM_SQDIFF

说明:

利用平方差进行匹配。

特点:系数越小匹配程度越好,最小值 0

公式如下:

image.png

② CV_TM_SQDIFF_NORMED【标准平方差匹配】

标准平方差匹配:CV_TM_SQDIFF_NORMED

特点同上①。

公式如下:

image.png

③ CV_TM_CCORR【相关匹配】

相关匹配:CV_TM_CCORR

利用模板和图像间的乘法操作。

特点: 系数越高匹配效果越好,最小值 0

公式如下:

image.png

④ CV_TM_CCORR_NORMED【标准相关匹配】

标准相关匹配:CV_TM_CCORR_NORMED

特点同③。

公式如下:

image.png

其中:

image.png

⑤ CV_TM_CCOEFF【相关系数匹配】

相关系数匹配 CV_TM_CCOEFF

利用模版对其均值的相对值与图像对其均值的相关值进行匹配。

特点: 系数越高匹配系数越好,最大值为 1,最小为 -1

公式如下:

image.png

其中:

image.png

⑥ CV_TM_CCOEFF_NORMED【标准相关系数匹配】

标准相关系数匹配:CV_TM_CCOEFF_NORMED

特点同上⑤。

公式如下:

image.png

喜欢的点个赞❤吧!

   

目录
相关文章
|
26天前
|
算法 搜索推荐 JavaScript
基于python智能推荐算法的全屋定制系统
本研究聚焦基于智能推荐算法的全屋定制平台网站设计,旨在解决消费者在个性化定制中面临的选择难题。通过整合Django、Vue、Python与MySQL等技术,构建集家装设计、材料推荐、家具搭配于一体的一站式智能服务平台,提升用户体验与行业数字化水平。
|
1月前
|
存储 监控 算法
监控电脑屏幕的帧数据检索 Python 语言算法
针对监控电脑屏幕场景,本文提出基于哈希表的帧数据高效检索方案。利用时间戳作键,实现O(1)级查询与去重,结合链式地址法支持多条件检索,并通过Python实现插入、查询、删除操作。测试表明,相较传统列表,检索速度提升80%以上,存储减少15%,具备高实时性与可扩展性,适用于大规模屏幕监控系统。
109 5
|
2月前
|
存储 算法 调度
【复现】【遗传算法】考虑储能和可再生能源消纳责任制的售电公司购售电策略(Python代码实现)
【复现】【遗传算法】考虑储能和可再生能源消纳责任制的售电公司购售电策略(Python代码实现)
172 26
|
2月前
|
机器学习/深度学习 算法 机器人
【机器人路径规划】基于D*算法的机器人路径规划(Python代码实现)
【机器人路径规划】基于D*算法的机器人路径规划(Python代码实现)
159 0
|
2月前
|
机器学习/深度学习 算法 机器人
【机器人路径规划】基于改进型A*算法的机器人路径规划(Python代码实现)
【机器人路径规划】基于改进型A*算法的机器人路径规划(Python代码实现)
197 0
|
2月前
|
机器学习/深度学习 编解码 算法
【机器人路径规划】基于迪杰斯特拉算法(Dijkstra)的机器人路径规划(Python代码实现)
【机器人路径规划】基于迪杰斯特拉算法(Dijkstra)的机器人路径规划(Python代码实现)
281 4
|
2月前
|
机器学习/深度学习 算法 机器人
【机器人路径规划】基于A*算法的机器人路径规划研究(Python代码实现)
【机器人路径规划】基于A*算法的机器人路径规划研究(Python代码实现)
405 4
|
2月前
|
机器学习/深度学习 算法 机器人
【机器人路径规划】基于深度优先搜索(Depth-First-Search,DFS)算法的机器人路径规划(Python代码实现)
【机器人路径规划】基于深度优先搜索(Depth-First-Search,DFS)算法的机器人路径规划(Python代码实现)
220 3
|
2月前
|
算法 机器人 定位技术
【机器人路径规划】基于流场寻路算法(Flow Field Pathfinding)的机器人路径规划(Python代码实现)
【机器人路径规划】基于流场寻路算法(Flow Field Pathfinding)的机器人路径规划(Python代码实现)
137 4
机器学习/深度学习 算法 自动驾驶
425 0

热门文章

最新文章

推荐镜像

更多