《深度学习》OpenCV轮廓检测 模版匹配 解析及实现

目录

一、模型匹配

1、什么是模型匹配

2、步骤

1)提取模型的特征

2)在图像中查找特征点

3)进行特征匹配

4)模型匹配

3、参数及用法

1、用法

2、参数

1)image:待搜索对象

2)templ:模板对象

3)method:计算匹配程度的方法

• TM_SQDIFF:平方差匹配法

• TM_CCORR:相关匹配法

• TM_CCOEFF:相关系数匹配法

• TM_SQDIFF_NORMED:归一化平方差匹配法

• TM_CCORR_NORMED:归一化相关匹配法

• TM_CCOEFF_NORMED:归一化相关系数匹配法

3、代码实现

运行结果为:

二、模型匹配总结

1、概念

2、主要流程

 1)选择合适的模型

 2)准备训练数据

 3)划分训练集和验证集

 4)初始化模型参数

 5)模型训练和调整

 6)模型评估

 7)模型选择

 8)模型应用


一、模型匹配

1、什么是模型匹配

        模型匹配是一种通过在图像中查找识别特定形状或物体的方法。模型匹配基于图像中的特征点,并尝试找到与预定义的模型或样本最匹配的图像区域。

2、步骤

        1)提取模型的特征

                对于模型或样本图像,使用特征提取算法(如SIFT、SURF或ORB)来检测和描述关键点和特征描述符。

        2)在图像中查找特征点

                对于待匹配的图像,同样使用相同的特征提取算法来检测和描述关键点和特征描述符。

        3)进行特征匹配

                通过计算模型特征点和待匹配图像中特征点之间的距离或相似度,找到最合适的匹配点。

        4)模型匹配

                根据特征匹配的结果,通过应用各种匹配算法(如RANSAC)来估算模型在图像中的位置和姿态。

3、参数及用法

        1、用法
cv2.matchTemplate(image, templ, method, result=None, mask=None)

        2、参数
                1)image:待搜索对象
                2)templ:模板对象
                3)method:计算匹配程度的方法
                        • TM_SQDIFF:平方差匹配法

                                该方法采用平方差来进行匹配,匹配越好,值越小,匹配越差,值越大

                        • TM_CCORR:相关匹配法

                               该方法采用乘法操作,数值越大表示匹配程度越好

                        • TM_CCOEFF:相关系数匹配法

                                数值越大表示匹配程度越好

                        • TM_SQDIFF_NORMED:归一化平方差匹配法

                                匹配越好,值越小,匹配越差,值越大

                        • TM_CCORR_NORMED:归一化相关匹配法

                                数值越大表明匹配程度越好

                        • TM_CCOEFF_NORMED:归一化相关系数匹配法

                                数值越大表明匹配程度越好

3、代码实现
import cv2
kele = cv2.imread('kele.png')  # 导入模版图片
template = cv2.imread('template.png')  # 导入模型图片
cv2.imshow('kele',kele)
cv2.imshow('template',template)
cv2.waitKey(0)

h,w = template.shape[:2]  # 获取模型高度和宽度
res = cv2.matchTemplate(kele,template,cv2.TM_CCOEFF_NORMED)  # 对模版和模型进行匹配,cv2.TM_CCOEFF_NORMED为匹配程度的方法,返回匹配结果的矩阵,其中每个元素表示该位置与模板的匹配程度
# cv2.minMaxLoc可以获取矩阵中的最小值和最大值,以及最小值的索引号和最大值的索引号
min_val,max_val,min_loc,max_loc = cv2.minMaxLoc(res)   # 获取矩阵中最小值、最大值、最小值位置的索引号、最大值位置的索引号
top_left = max_loc
bottom_right = (top_left[0] + w,top_left[1] + h)
kele_template = cv2.rectangle(kele,top_left,bottom_right,(0,255,0),2)    # 绘制矩形,图像为kele,左上角坐标为top_left,右下角坐标为bottom_right,绘制矩形的颜色为绿色,线条粗细为2

cv2.imshow('kele_template',kele_template)
cv2.waitKey(0)

运行结果为:

二、模型匹配总结

1、概念

        模型匹配(Model Fitting)是指将机器学习模型与训练数据进行拟合,使模型能够从数据中学习到最佳的参数或规律。模型匹配是机器学习中一个关键的步骤,它决定了模型的准确性和泛化能力。

        模型匹配的主要目标是通过调整模型的参数或超参数,使得模型能够更好地拟合训练数据,并且在未见过的数据上具有较好的预测能力。

2、主要流程

 1)选择合适的模型

        根据问题的特点和数据的性质,选择合适的机器学习模型。常见的模型包括线性回归、逻辑回归、决策树、支持向量机、神经网络等。

 2)准备训练数据

        将原始数据进行预处理和特征工程,包括数据清洗、特征选择、特征缩放等,以便于模型的学习和训练。

 3)划分训练集和验证集

        将原始数据划分为训练集和验证集。训练集用于模型的学习和参数调整,验证集用于评估模型的性能和选择最佳的参数。

 4)初始化模型参数

        对模型的参数进行初始化,可以使用随机初始化或者根据经验设置。

 5)模型训练和调整

        使用训练集中的数据对模型进行训练,并通过调整参数或超参数来优化模型的性能。常见的优化算法包括梯度下降、随机梯度下降、牛顿法等。

 6)模型评估

        使用验证集中的数据对训练好的模型进行评估,计算评价指标如准确率、精确率、召回率、F1分数等。

 7)模型选择

        根据模型在验证集上的表现选择最佳的模型,可以根据评价指标或交叉验证等方法进行选择。

 8)模型应用

        经过模型匹配和选择后,将最佳的模型应用到测试集或实际数据中进行预

        需要注意的是,模型匹配是一个迭代的过程,需要多次调整参数和模型结构,直到得到满意的结果。同时,模型匹配也需要考虑过拟合和欠拟合问题,以及如何平衡模型的复杂性和泛化能力。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/875039.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

QT之QML学习五:添加自定义Qml组件,以及组件管理

开发环境: 1、Qt 6.7.2 2、Pyside6 3、Python 3.11.4 4、Windows 10 重要的事情说三遍,使用自定义qml参考链接: Qt官网参考网址!!! 重要的事情说三遍,使用自定义qml参考链接: Qt官网参考网址!!! 重要的事情说三遍,使用自定义qml参考链接: Qt官网参考网址!!!…

JMM 指令重排 volatile happens-before

在单线程程序中,操作系统会通过编译器优化重排序、指令级并行重排序、内存系统重排序三个步骤对源代码进行指令重排,提高代码执行的性能。 但是在多线程情况下,操作系统“盲目” 地进行指令重排可能会导致我们不想看到的问题,如经…

ComfyUI+Krea免费利用AI制作网站萌宠IP,五步搞定制作AI萌宠

大家好,这是我们网站的萌宠——Meo喵,是一只猫咪AI工具专家🐾,嘻嘻🎉🐱。是AIGC年轻的艺术家星之,利用AI产品ComfyUI、Krea,搭配PS制作而成,下面先介绍一下它的形象&…

Word封面对齐技巧

文章目录 前言一、对齐封面1. 点击视图,添加标尺2. 选中文字,右击段落3. 点击制表符,设置制表位位置4. 鼠标点击“:”后面,点击“Tab”键5. 按住“Ctrl”键,选中没对齐的文字,点击“中文板式”&…

如何将任何文本语料转换为知识图谱?

转自:吴建明利驰软件 几个月前,基于知识的问答系统(Knowledge Base Question Answering,KBQA)还是个新概念。 现在,随着大型语言模型(LLMs)的发展,带有检索增强生成&am…

【视频教程】GEE遥感云大数据在林业中的应用与典型案例实践

近年来遥感技术得到了突飞猛进的发展,航天、航空、临近空间等多遥感平台不断增加,数据的空间、时间、光谱分辨率不断提高,数据量猛增,遥感数据已经越来越具有大数据特征。遥感大数据的出现为相关研究提供了前所未有的机遇&#xf…

初识爬虫1

学习路线:爬虫基础知识-requests模块-数据提取-selenium-反爬与反反爬-MongoDB数据库-scrapy-appium。 对应视频链接(百度网盘):正在整理中 爬虫基础知识: 1.爬虫的概念 总结:模拟浏览器,发送请求,获取…

基于SpringBoot的在线购物平台

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 【2025最新】基于JavaSpringBootVueMySQL的在线购物平台&am…

基于SpringBoot+Vue的超市外卖管理系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 【2025最新】基于JavaSpringBootVueMySQL的…

sqli-labs靶场自动化利用工具——第6关

文章目录 概要整体架构流程技术细节执行效果小结 概要 Sqli-Labs靶场对于网安专业的学生或正在学习网安的朋友来说并不陌生,或者说已经很熟悉。那有没有朋友想过自己开发一个测试脚本能实现自动化化测试sqli-labs呢?可能有些人会说不是有sqlmap&#…

9月11号作业

头文件 #include <cmath> #include <QApplication> #include <QMainWindow> #include <QLabel> #include <QTimer> #include <QVBoxLayout> #include <QRandomGenerator> #include <QTimerEvent> #include <QTextT…

MySQL分页查询(DQL)

因DataGrip我的激活到期&#xff0c;也没太多精力去破解&#xff0c;最后换了Navicat&#xff0c;实际上操作是一样的&#xff0c;不变。 先看我的表数据&#xff0c;以我的数据作为例子 基本语法 select 字段列表 from 表名 起始索引&#xff0c;查询记录数。 1.查询第1页员…

多线程学习篇一:启动多线程的三种方式

1. 继承 Thread 类 Slf4j public class MyThread extends Thread {Overridepublic void run() {log.info("MyThread run ...");}public static void main(String[] args) {MyThread myThread new MyThread();myThread.start();} } 2. 实现 Runnable 接口 Slf4j pu…

基于微信小程序的宿舍报修系统的设计与实现

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 基于微信小程序JavaSpringBootVueMySQL的宿…

linux 操作系统下cp命令介绍及案例应用

linux 操作系统下cp命令介绍及案例应用 cp命令是Linux操作系统中用于复制文件和目录的基本命令。它的功能强大&#xff0c;适用于各种文件管理任务 cp命令概述 基本语法:bashcp [options] <source> <destination> 功能: 复制单个文件或多个文件到指定位置。 递…

python基础知识(一)

目录 1.注释 2.关键字 3.标识符 4.常见命名方法 5.变量 6.常见的数据类型 1.注释 注释&#xff1a;在程序中&#xff0c;对代码进行解释说明的文字。 在Python中&#xff0c;注释分为两类&#xff1a; &#xff08;1&#xff09;单行注释&#xff1a;# # 注释文字内容…

降维打击 华为赢麻了

文&#xff5c;琥珀食酒社 作者 | 积溪 真是赢麻了 华为估计都懵了 这辈子还能打这么富裕的仗&#xff1f; 其实在苹果和华为的发布会召开之前 我就知道华为肯定会赢 但我没想到 苹果会这么拉胯 华为这是妥妥的降维打击啊 就说这苹果iPhone 16吧 屏幕是变大了、颜色…

AUTOSAR_EXP_ARAComAPI的5章笔记(3)

返回目录 5.3.4 Finding Services Proxy Class提供类(静态)方法来查找“连接”的服务实例。由于服务实例的可用性本质上是动态的(因为它有一个生命周期)&#xff0c;所以ara::com提供了如下两种不同的方法来实现“FindService ”: StartFindService是一个类方法&#xff0c;…

k8s环境搭建(续)

查看节点信息并做快照 kubectl get nodes 将components.yml文件上传到master主机 创建nginx&#xff0c;会在添加一个新的pod kubectl run nginx --imagesnginx:latest 查看nginx的pod信息 [rootk8s-master ~]# kubectl get po -Aowide|grep nginx 出现错误&#xff0c;查…

需求分析概述

为什么要进行需求分析呢&#xff1f; 笑话&#xff1a;富翁娶妻 某富翁想要娶老婆&#xff0c;有三个人选&#xff0c;富翁给了三个女孩各一千元&#xff0c;请 她们把房间装满。第一个女孩买了很多棉花&#xff0c;装满房间的1/2。第 二个女孩买了很多气球&#xff0c;装满…