opencv各个模块介绍(2)
Features2D 模块:特征检测和描述子计算模块,包括SIFT、SURF等算法。
Features2D 模块提供了许多用于特征检测和描述子匹配的函数和类,这些函数和类可用于图像特征的提取、匹配和跟踪。
-
FeatureDetector:特征检测器的基类,包括常用的特征检测算法,如ORB、SIFT、SURF、FAST 等。
-
DescriptorExtractor:描述子提取器的基类,用于从图像中提取特征点周围的描述子,包括常用的描述子算法,如ORB、SIFT、SURF 等。
-
Feature2D:特征检测器和描述子提取器的统一接口类,可以方便地使用各种特征检测和描述子提取算法。
-
DescriptorMatcher:描述子匹配器的基类,用于对提取出的描述子进行匹配,包括常用的匹配算法,如BruteForce、FlannBased 等。
-
drawKeypoints:用于在图像上绘制特征点的函数,可以将检测到的特征点可视化显示在图像上。
-
drawMatches:用于在两幅图像上绘制特征点匹配的函数,可以将两幅图像中匹配的特征点对可视化显示出来。
-
compute:用于计算图像中的特征点和描述子的函数,可以对输入的图像进行特征点检测和描述子提取。
-
match:用于对输入的两组描述子进行匹配的函数,可以对提取出的描述子进行匹配操作。
这些函数和类提供了在图像中进行特征检测、描述子提取和匹配的基本工具,通过使用它们,我们可以提取图像中的关键特征点和描述子,进行特征匹配和跟踪,从而实现诸如目标识别、图像拼接、运动跟踪等应用。
Calib3d 模块:相机标定和三维重建模块
OpenCV Calib3d 模块函数和类:
-
calibrateCamera:用于对相机进行内参和畸变参数的标定,通过捕获多个图像中的棋盘格等模板,并提取角点位置来进行相机标定。
-
stereoCalibrate:用于立体相机的标定,通过匹配两个相机的图像中的对应点,求解两个相机之间的外参和内参关系。
-
stereoRectify:用于校正立体相机的图像,使得两个相机的光学轴平行,方便后续的立体匹配。
-
stereoMatch:用于立体匹配,通过匹配左右两个相机的图像,得到对应点的深度信息。
-
solvePnP:用于从图像中的二维点和三维点之间求解相机的姿态(旋转和平移矩阵)。
-
findHomography:用于寻找两幅图像之间的单应性矩阵,通常用于图像配准和目标跟踪。
-
triangulatePoints:用于三角化立体视觉中的对应点,求解三维空间中的点坐标。
-
undistort:用于去畸变,将畸变图像转换为无畸变的图像。
这些函数和类在摄像机标定、立体视觉和三维重构等领域具有广泛的应用,可以帮助我们理解场景的三维结构、测量物体的尺寸、进行虚拟现实等任务。通过使用这些函数和类,我们可以实现各种基于摄像机的视觉任务,并提高图像处理和计算机视觉的效果和准确性。
Videoio 模块:视频输入/输出模块,用于读取和写入视频文件
-
VideoCapture:用于从视频文件或摄像头捕获视频帧的类,可以通过该类实例来读取视频文件或捕获摄像头视频流。
-
VideoWriter:用于将视频帧写入视频文件的类,可以通过该类实例将视频帧写入到视频文件中。
-
cv::CAP_PROP_ 参数*:一系列用于设置视频流参数的常量,如帧率、分辨率、亮度、对比度等。
-
isOpened:用于检查 VideoCapture 或 VideoWriter 是否成功打开视频文件或捕获设备。
-
read:用于从 VideoCapture 实例中读取下一帧视频。
-
write:用于将视频帧写入到 VideoWriter 实例中。
-
set:用于设置 VideoCapture 或 VideoWriter 的参数,如帧率、分辨率等。
-
get:用于获取 VideoCapture 或 VideoWriter 的参数,如帧率、分辨率等。
通过使用 Videoio 模块提供的函数和类,我们可以方便地读取视频文件、捕获摄像头视频流,并进行视频数据的处理和分析。这些函数和类为我们在计算机视觉和图像处理领域中处理视频数据提供了便捷的工具,可以帮助我们实现视频内容的处理、分析和应用。
Dnn 模块:深度学习模块,支持使用深度学习模型进行图像处理任务
-
readNet:用于加载深度学习模型的函数,支持多种深度学习框架(如 TensorFlow、Caffe、Darknet 等)的模型格式。
-
Net:代表一个深度学习模型的类,可以用于进行前向推断、获取输出等操作。
-
setInput:用于设置输入数据到深度学习模型中,例如设置图像作为模型的输入。
-
forward:执行前向推断,获取模型的输出。
-
getUnconnectedOutLayers:获取模型中未连接到其他层的输出层索引。
-
getLayerNames:获取模型中所有层的名称。
-
blobFromImage:将图像转换为网络模型的输入 blob 格式。
-
NMSBoxes:执行非最大抑制(Non-Maximum Suppression),用于目标检测中去除重叠的边界框。
通过使用 Dnn 模块提供的函数和类,我们可以方便地加载和使用深度学习模型,进行图像识别、目标检测、人脸识别等任务。这些函数和类为我们在计算机视觉领域应用深度学习模型提供了强大的工具,可以帮助我们实现各种复杂的视觉任务,并提高处理效率和准确性。
备注:
NMS(Non-Maximum Suppression,非最大抑制)是一种常用的目标检测算法,用于在目标检测任务中去除重叠的边界框,保留最相关的目标框。NMS 算法通常应用于神经网络输出的边界框预测中。
NMS 的原理如下:
-
得分排序:首先,对所有的候选边界框按照其置信度得分进行排序,通常情况下,得分越高的边界框越可能包含真实目标。
-
选择最高得分框:从得分最高的边界框开始,将该边界框加入最终输出的目标框列表中。
-
计算重叠区域:对于剩余的边界框,计算它们与已选边界框的重叠区域的面积,通常采用交并比(IoU)来衡量两个边界框的重叠程度。
-
去除重叠边界框:对于与已选边界框有较大重叠的边界框,根据设定的阈值(通常为 0.5 或 0.7)来决定是否将其丢弃,只保留得分最高的边界框。
-
重复步骤:重复上述步骤,直到处理完所有的候选边界框。
NMS 算法可以在目标检测结果中去除大量重叠的边界框,保留最具代表性和置信度最高的目标框,从而提高目标检测算法的准确性和鲁棒性。
NMS 算法在许多目标检测器(如 Faster R-CNN、YOLO 等)中被广泛应用,是提高目标检测性能的重要组成部分。
Machine Learning(ML)模块:机器学习模块,提供了一些常见的机器学习算法实现
-
cv::ml::SVM:支持向量机(SVM)模型的实现类,用于二分类、多分类和回归任务。
-
cv::ml::KNearest:k-最近邻(KNN)模型的实现类,用于基于最近邻的分类和回归。
-
cv::ml::RTrees:随机森林(Random Forest)模型的实现类,用于决策树集成学习。
-
cv::ml::Boost:Boosting 模型的实现类,用于集成多个弱分类器以提高性能。
-
cv::ml::ANN_MLP:人工神经网络(MLP)模型的实现类,用于深度神经网络的训练和预测。
-
cv::ml::EM:期望最大化(Expectation-Maximization)算法的实现类,用于高斯混合模型的聚类。
-
cv::ml::TrainData:用于加载和处理训练数据集的类,方便机器学习模型的训练。
-
cv::ml::ParamGrid:用于定义参数网格搜索的类,帮助进行模型参数调优。
-
cv::ml::StatModel:所有机器学习模型的基类,包括了训练和预测等通用方法。
这些函数和类提供了丰富的功能和工具,可以帮助我们在 OpenCV 中应用各种机器学习算法,并实现图像分类、目标检测、特征提取等复杂任务。通过熟练掌握这些函数和类的用法,我们可以更好地利用机器学习技术来解决计算机视觉和图像处理领域的挑战。
Stitching 模块:图像拼接模块,用于将多幅图片拼接成全景图像
-
cv::Stitcher::create():静态方法,用于创建
Stitcher
类的实例。 -
cv::Stitcher::stitch():拼接多幅图像,生成全景图像。可以通过该方法传入图像集合进行拼接,并获取拼接后的全景图像。
-
cv::Stitcher::estimateTransform():估计图像间的转换矩阵,用于拼接图像时的配准。
-
cv::Stitcher::composePanorama():对拼接后的全景图像进行优化和融合,消除拼接过程中的接缝。
-
cv::Stitcher::registrationResol():设置拼接的分辨率,影响最终拼接结果的清晰度和质量。
-
cv::Stitcher::blendImages():对拼接的图像进行融合处理,使得拼接后的全景图像看起来更加自然。
Photo 模块:图像编辑和修复模块,包括图像去噪、颜色校正等功能
Photo 模块提供了许多图像处理和修复的函数和类,用于实现图像增强、去噪、颜色校正等功能。以下是一些常用的 OpenCV Photo 模块函数和类:
-
cv::fastNlMeansDenoising():使用非局部均值去噪算法对图像进行去噪处理。
-
cv::colorChange():将图像的颜色转换为目标颜色。
-
cv::seamlessClone():无缝克隆算法,将源图像的一部分融合到目标图像中,使得融合后的图像看起来自然。
-
cv::illuminationChange():调整图像的光照条件。
-
cv::textureFlattening():纹理平滑算法,用于减少图像中的纹理细节。
-
cv::rollMinEigenVal():计算图像的最小特征值,用于角点检测和特征匹配。
-
cv::edgePreservingFilter():边缘保留滤波器,用于保留图像中的细节信息而抑制噪声。
-
cv::detailEnhance():增强图像的细节和结构。
-
cv::decolor():将彩色图像转换为灰度图像,但保留图像的结构信息。
-
cv::colorChange():改变图像的颜色。
相关文章:

opencv各个模块介绍(2)
Features2D 模块:特征检测和描述子计算模块,包括SIFT、SURF等算法。 Features2D 模块提供了许多用于特征检测和描述子匹配的函数和类,这些函数和类可用于图像特征的提取、匹配和跟踪。 FeatureDetector:特征检测器的基类…...

HTTPS:原理、使用方法及安全威胁
文章目录 一、HTTPS技术原理1.1 主要技术原理1.2 HTTPS的工作过程1.2.1 握手阶段1.2.2 数据传输阶段 1.3 HTTPS的安全性 二、HTTPS使用方法三、HTTPS安全威胁四、总结 HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer)&am…...

【云开发笔记No.6】腾讯CODING平台
腾讯云很酷的一个应用,现在对于研发一体化,全流程管理,各种工具层出不穷。 云时代用云原生,再加上AI,编码方式真是发生了质的变化。 从前,一个人可以写一个很酷的软件,后来,这变得…...
20.Ubuntu下安装GCC
文章目录 Ubuntu下安装GCC查看官方安装指导错误缺少gmp库缺少32位开发库libcg: error: gengtype-lex.c: No such file or directoryreference 欢迎访问个人网络日志🌹🌹知行空间🌹🌹 Ubuntu下安装GCC 为了支持新的c标准ÿ…...
2.windows ubuntu子系统配置
打开UBuntu后, > wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-latest-Linux-x86_64.sh #下载conda软件。 > bash Miniconda3-latest-Linux-x86_64.sh #下载完conda后执行这步 > source ~/.bashrc > conda-h #出现一下…...

vscode的一些技巧
技巧1:调试时传参数 在launch.json的configuration中"pwd"或者"program"选项之后添加如下选项: “--args”:["参数1", "参数2", ..., "参数3] 参数之间使用逗号隔开 技巧2:断点 普通断点使…...

JavaEE企业级分布式高级架构师课程
教程介绍 本课程主要面向1-5年及以上工作经验的Java工程师,大纲由IT界知名大牛 — 廖雪峰老师亲自打造,由来自一线大型互联网公司架构师、技术总监授课,内容涵盖深入spring5设计模式/高级web MVC开发/高级数据库设计与开发/高级响应式web开发…...
c语言函数大全(K开头)
c语言函数大全(K开头) There is no nutrition in the blog content. After reading it, you will not only suffer from malnutrition, but also impotence. The blog content is all parallel goods. Those who are worried about being cheated should leave quickly. 函数名…...

高效备考2025年AMC8竞赛:吃透2000-2024年600道真题(免费送题)
我们继续来随机看五道AMC8的真题和解析,根据实践经验,对于想了解或者加AMC8美国数学竞赛的考生来说,吃透AMC8历年真题是备考更加科学、有效的方法之一。 最近有家长朋友问我,现在有哪些类似于奥数的比赛可以参加?我的…...

HTML5和CSS3新特性
Html新增属性 1.新增语义化标签 <header>:头部标签 <nav>:导航标签 <article>:内容标签 <section>:定义文档某个区域 <aside>:侧边栏标签 <footer>:尾部标签 2.…...

Java基础-正则表达式
文章目录 1.基本介绍2.正则底层实现1.matcher.find()完成的任务2.matcher.group(0)分析1.源代码2.解释(不分组)3.解释(分组) 3.总结 3.正则表达式语法1.基本介绍2.元字符的转义符号1.基本介绍2.代码实例 3.字符匹配符1.基本介绍2.…...
构建Pytorch虚拟环境教程
构建PyTorch虚拟环境通常涉及使用诸如Anaconda或venv等工具来管理Python环境,以便在一个独立的空间中安装PyTorch和其他依赖项。以下是使用Anaconda创建PyTorch虚拟环境的步骤(适用于不同操作系统,包括Windows、Linux和MacOS)&…...

uniapp页面嵌套其他页面的实现
功能: 类似于一个drawer,当主页面加载的时候会一并加载url对应的组件,当点击后以drawer形式显示组件里面的内容,可动画。 <navigator url"/pages/my/components/personalMessage" slot"right"><view><di…...

XUbuntu22.04之安装Plantuml(二百二十三)
简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…...
第四周刷题小结
第一天 P1068 [NOIP2009 普及组] 分数线划定 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 思路: 这个题感觉不难,主要是用到了结构体cmp的自定义排序,但是还是错了一次,就是没注意到题目给的条件。 #include<iostream&g…...

基于Java中的SSM框架实现考研指导平台系统项目【项目源码+论文说明】
基于Java中的SSM框架实现考研指导平台系统演示 摘要 应对考研的学生,为了更好的使校园考研有一个更好的环境好好的学习,建议一个好的校园网站,是非常有必要的。提供学生的学习提供一个交流的空间。帮助同学们在学习高数、学习设计、学习统计…...

项目2-用户登录
1.创建项目 2.引入前端代码并检查是否有误 3.定义接口 需求分析 对于后端开发⼈员⽽⾔, 不涉及前端⻚⾯的展⽰, 只需要提供两个功能 1. 登录⻚⾯: 通过账号和密码, 校验输⼊的账号密码是否正确, 并告知前端 2. ⾸⻚: 告知前端当前登录⽤⼾. 如果当前已有⽤⼾登录, 返回登录的账…...

网易web安全工程师进阶版课程
课程介绍 《Web安全工程师(进阶)》是由“ i春秋学院联合网易安全部”出品,资深讲师团队通过精炼的教学内容、丰富的实际场景及综合项目实战,帮助学员纵向提升技能,横向拓宽视野,牢靠掌握Web安全工程师核心…...

【Postman】工具使用介绍
一、postman工具介绍 1.什么是postman postman是谷歌开发的一款网页调试和接口测试工具,能够发送任何请求类型的http请求,支持GET/POST/PUT/DELETE等方法。postman简单易用,可以直接填写URL,header,body就可以发送一…...

【vue核心技术实战精讲】1.3 - 1.6 VUE 指令 (上)
前言 上节,我们学习了 Vue的起步 和 插值表达式 本节内容 Vue指令之v-text 和 v-htmlVue指令之v-if 和 v-showVue指令之v-bind绑定Vue指令之v-on事件处理 1、v-text 和 v-html {{}} 和v-text的作用是一样的 都是插入值,直接渲染 ≈ innerTextv-html既能插入值 又能插入标签…...
云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?
大家好,欢迎来到《云原生核心技术》系列的第七篇! 在上一篇,我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在,我们就像一个拥有了一块崭新数字土地的农场主,是时…...

2025年能源电力系统与流体力学国际会议 (EPSFD 2025)
2025年能源电力系统与流体力学国际会议(EPSFD 2025)将于本年度在美丽的杭州盛大召开。作为全球能源、电力系统以及流体力学领域的顶级盛会,EPSFD 2025旨在为来自世界各地的科学家、工程师和研究人员提供一个展示最新研究成果、分享实践经验及…...

23-Oracle 23 ai 区块链表(Blockchain Table)
小伙伴有没有在金融强合规的领域中遇见,必须要保持数据不可变,管理员都无法修改和留痕的要求。比如医疗的电子病历中,影像检查检验结果不可篡改行的,药品追溯过程中数据只可插入无法删除的特性需求;登录日志、修改日志…...
Qt Widget类解析与代码注释
#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码,写上注释 当然可以!这段代码是 Qt …...
电脑插入多块移动硬盘后经常出现卡顿和蓝屏
当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时,可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案: 1. 检查电源供电问题 问题原因:多块移动硬盘同时运行可能导致USB接口供电不足&#x…...
在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module
1、为什么要修改 CONNECT 报文? 多租户隔离:自动为接入设备追加租户前缀,后端按 ClientID 拆分队列。零代码鉴权:将入站用户名替换为 OAuth Access-Token,后端 Broker 统一校验。灰度发布:根据 IP/地理位写…...
unix/linux,sudo,其发展历程详细时间线、由来、历史背景
sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...

自然语言处理——循环神经网络
自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元(GRU)长短期记忆神经网络(LSTM)…...
服务器--宝塔命令
一、宝塔面板安装命令 ⚠️ 必须使用 root 用户 或 sudo 权限执行! sudo su - 1. CentOS 系统: yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh2. Ubuntu / Debian 系统…...

基于TurtleBot3在Gazebo地图实现机器人远程控制
1. TurtleBot3环境配置 # 下载TurtleBot3核心包 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git git clone -b noetic https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git git clone -b noetic-dev…...