opencv各个模块介绍(2)

Features2D 模块:特征检测和描述子计算模块,包括SIFT、SURF等算法。

Features2D 模块提供了许多用于特征检测和描述子匹配的函数和类,这些函数和类可用于图像特征的提取、匹配和跟踪。

  1. FeatureDetector:特征检测器的基类,包括常用的特征检测算法,如ORB、SIFT、SURF、FAST 等。

  2. DescriptorExtractor:描述子提取器的基类,用于从图像中提取特征点周围的描述子,包括常用的描述子算法,如ORB、SIFT、SURF 等。

  3. Feature2D:特征检测器和描述子提取器的统一接口类,可以方便地使用各种特征检测和描述子提取算法。

  4. DescriptorMatcher:描述子匹配器的基类,用于对提取出的描述子进行匹配,包括常用的匹配算法,如BruteForce、FlannBased 等。

  5. drawKeypoints:用于在图像上绘制特征点的函数,可以将检测到的特征点可视化显示在图像上。

  6. drawMatches:用于在两幅图像上绘制特征点匹配的函数,可以将两幅图像中匹配的特征点对可视化显示出来。

  7. compute:用于计算图像中的特征点和描述子的函数,可以对输入的图像进行特征点检测和描述子提取。

  8. match:用于对输入的两组描述子进行匹配的函数,可以对提取出的描述子进行匹配操作。

这些函数和类提供了在图像中进行特征检测、描述子提取和匹配的基本工具,通过使用它们,我们可以提取图像中的关键特征点和描述子,进行特征匹配和跟踪,从而实现诸如目标识别、图像拼接、运动跟踪等应用。

Calib3d 模块:相机标定和三维重建模块

OpenCV Calib3d 模块函数和类:

  1. calibrateCamera:用于对相机进行内参和畸变参数的标定,通过捕获多个图像中的棋盘格等模板,并提取角点位置来进行相机标定。

  2. stereoCalibrate:用于立体相机的标定,通过匹配两个相机的图像中的对应点,求解两个相机之间的外参和内参关系。

  3. stereoRectify:用于校正立体相机的图像,使得两个相机的光学轴平行,方便后续的立体匹配。

  4. stereoMatch:用于立体匹配,通过匹配左右两个相机的图像,得到对应点的深度信息。

  5. solvePnP:用于从图像中的二维点和三维点之间求解相机的姿态(旋转和平移矩阵)。

  6. findHomography:用于寻找两幅图像之间的单应性矩阵,通常用于图像配准和目标跟踪。

  7. triangulatePoints:用于三角化立体视觉中的对应点,求解三维空间中的点坐标。

  8. undistort:用于去畸变,将畸变图像转换为无畸变的图像。

这些函数和类在摄像机标定、立体视觉和三维重构等领域具有广泛的应用,可以帮助我们理解场景的三维结构、测量物体的尺寸、进行虚拟现实等任务。通过使用这些函数和类,我们可以实现各种基于摄像机的视觉任务,并提高图像处理和计算机视觉的效果和准确性。

Videoio 模块:视频输入/输出模块,用于读取和写入视频文件

  1. VideoCapture:用于从视频文件或摄像头捕获视频帧的类,可以通过该类实例来读取视频文件或捕获摄像头视频流。

  2. VideoWriter:用于将视频帧写入视频文件的类,可以通过该类实例将视频帧写入到视频文件中。

  3. cv::CAP_PROP_ 参数*:一系列用于设置视频流参数的常量,如帧率、分辨率、亮度、对比度等

  4. isOpened:用于检查 VideoCapture 或 VideoWriter 是否成功打开视频文件或捕获设备。

  5. read:用于从 VideoCapture 实例中读取下一帧视频。

  6. write:用于将视频帧写入到 VideoWriter 实例中。

  7. set:用于设置 VideoCapture 或 VideoWriter 的参数,如帧率、分辨率等。

  8. get:用于获取 VideoCapture 或 VideoWriter 的参数,如帧率、分辨率等。

通过使用 Videoio 模块提供的函数和类,我们可以方便地读取视频文件、捕获摄像头视频流,并进行视频数据的处理和分析。这些函数和类为我们在计算机视觉和图像处理领域中处理视频数据提供了便捷的工具,可以帮助我们实现视频内容的处理、分析和应用。

Dnn 模块:深度学习模块,支持使用深度学习模型进行图像处理任务

  1. readNet:用于加载深度学习模型的函数,支持多种深度学习框架(如 TensorFlow、Caffe、Darknet 等)的模型格式。

  2. Net:代表一个深度学习模型的类,可以用于进行前向推断、获取输出等操作。

  3. setInput:用于设置输入数据到深度学习模型中,例如设置图像作为模型的输入。

  4. forward:执行前向推断,获取模型的输出。

  5. getUnconnectedOutLayers:获取模型中未连接到其他层的输出层索引。

  6. getLayerNames:获取模型中所有层的名称。

  7. blobFromImage:将图像转换为网络模型的输入 blob 格式。

  8. NMSBoxes:执行非最大抑制(Non-Maximum Suppression),用于目标检测中去除重叠的边界框。

通过使用 Dnn 模块提供的函数和类,我们可以方便地加载和使用深度学习模型,进行图像识别、目标检测、人脸识别等任务。这些函数和类为我们在计算机视觉领域应用深度学习模型提供了强大的工具,可以帮助我们实现各种复杂的视觉任务,并提高处理效率和准确性。

备注:

NMS(Non-Maximum Suppression,非最大抑制)是一种常用的目标检测算法,用于在目标检测任务中去除重叠的边界框,保留最相关的目标框。NMS 算法通常应用于神经网络输出的边界框预测中。

NMS 的原理如下:

  1. 得分排序:首先,对所有的候选边界框按照其置信度得分进行排序,通常情况下,得分越高的边界框越可能包含真实目标。

  2. 选择最高得分框:从得分最高的边界框开始,将该边界框加入最终输出的目标框列表中。

  3. 计算重叠区域:对于剩余的边界框,计算它们与已选边界框的重叠区域的面积,通常采用交并比(IoU)来衡量两个边界框的重叠程度。

  4. 去除重叠边界框:对于与已选边界框有较大重叠的边界框,根据设定的阈值(通常为 0.5 或 0.7)来决定是否将其丢弃,只保留得分最高的边界框。

  5. 重复步骤:重复上述步骤,直到处理完所有的候选边界框。

NMS 算法可以在目标检测结果中去除大量重叠的边界框,保留最具代表性和置信度最高的目标框,从而提高目标检测算法的准确性和鲁棒性。

NMS 算法在许多目标检测器(如 Faster R-CNN、YOLO 等)中被广泛应用,是提高目标检测性能的重要组成部分。

Machine Learning(ML)模块:机器学习模块,提供了一些常见的机器学习算法实现

  1. cv::ml::SVM:支持向量机(SVM)模型的实现类,用于二分类、多分类和回归任务。

  2. cv::ml::KNearest:k-最近邻(KNN)模型的实现类,用于基于最近邻的分类和回归。

  3. cv::ml::RTrees:随机森林(Random Forest)模型的实现类,用于决策树集成学习。

  4. cv::ml::Boost:Boosting 模型的实现类,用于集成多个弱分类器以提高性能。

  5. cv::ml::ANN_MLP:人工神经网络(MLP)模型的实现类,用于深度神经网络的训练和预测。

  6. cv::ml::EM:期望最大化(Expectation-Maximization)算法的实现类,用于高斯混合模型的聚类。

  7. cv::ml::TrainData:用于加载和处理训练数据集的类,方便机器学习模型的训练。

  8. cv::ml::ParamGrid:用于定义参数网格搜索的类,帮助进行模型参数调优。

  9. cv::ml::StatModel:所有机器学习模型的基类,包括了训练和预测等通用方法。

这些函数和类提供了丰富的功能和工具,可以帮助我们在 OpenCV 中应用各种机器学习算法,并实现图像分类、目标检测、特征提取等复杂任务。通过熟练掌握这些函数和类的用法,我们可以更好地利用机器学习技术来解决计算机视觉和图像处理领域的挑战。

Stitching 模块:图像拼接模块,用于将多幅图片拼接成全景图像

  1. cv::Stitcher::create():静态方法,用于创建 Stitcher 类的实例。

  2. cv::Stitcher::stitch():拼接多幅图像,生成全景图像。可以通过该方法传入图像集合进行拼接,并获取拼接后的全景图像。

  3. cv::Stitcher::estimateTransform():估计图像间的转换矩阵,用于拼接图像时的配准。

  4. cv::Stitcher::composePanorama():对拼接后的全景图像进行优化和融合,消除拼接过程中的接缝。

  5. cv::Stitcher::registrationResol():设置拼接的分辨率,影响最终拼接结果的清晰度和质量。

  6. cv::Stitcher::blendImages():对拼接的图像进行融合处理,使得拼接后的全景图像看起来更加自然。

Photo 模块:图像编辑和修复模块,包括图像去噪、颜色校正等功能

Photo 模块提供了许多图像处理和修复的函数和类,用于实现图像增强、去噪、颜色校正等功能。以下是一些常用的 OpenCV Photo 模块函数和类:

  1. cv::fastNlMeansDenoising():使用非局部均值去噪算法对图像进行去噪处理。

  2. cv::colorChange():将图像的颜色转换为目标颜色。

  3. cv::seamlessClone():无缝克隆算法,将源图像的一部分融合到目标图像中,使得融合后的图像看起来自然。

  4. cv::illuminationChange():调整图像的光照条件。

  5. cv::textureFlattening():纹理平滑算法,用于减少图像中的纹理细节。

  6. cv::rollMinEigenVal():计算图像的最小特征值,用于角点检测和特征匹配。

  7. cv::edgePreservingFilter():边缘保留滤波器,用于保留图像中的细节信息而抑制噪声。

  8. cv::detailEnhance():增强图像的细节和结构。

  9. cv::decolor():将彩色图像转换为灰度图像,但保留图像的结构信息。

  10. cv::colorChange():改变图像的颜色。

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

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

相关文章

AI应用开发-基于python的知识图谱技术

AI应用开发相关目录 本专栏包括AI应用开发相关内容分享,包括不限于AI算法部署实施细节、AI应用后端分析服务相关概念及开发技巧、AI应用后端应用服务相关概念及开发技巧、AI应用前端实现路径及开发技巧 适用于具备一定算法及Python使用基础的人群 AI应用开发流程概…

19 反向迭代器

反向迭代器和正向迭代器相反,比如一个数组内容是1,2,3,4,5。正向迭代器就是按顺序输出,反向迭代器是5,4,3,2,1,顺序倒着。想要第一个输出5,需要反向迭代器rbegin在5的位置,判断输出完的条件,rend在头节点的位置就行,只…

【go从入门到精通】select条件控制

作者简介: 高科,先后在 IBM PlatformComputing从事网格计算,淘米网,网易从事游戏服务器开发,拥有丰富的C,go等语言开发经验,mysql,mongo,redis等数据库,设计模…

【八股】ThreadLocal原理

1. Thread.java 我们首先打开Thread.java源码,看到里面有一个ThreadLocalMap类型的变量threadLocals 2. ThreadLocal.java -> getMap(thread t) 然后ThreadLocal.java里面有一个getMap函数,传入的是线程,返回的是线程里面的ThreadLoca…

mysql无法看到3306端口监听

参考:https://blog.csdn.net/shumeigang/article/details/103902459 mysql> show global variables like ‘port’; 是0 原因是我的my.cnf有话: skip-network 或 注释掉,然后重新启动下数据库,运行netstat -an|grep 3306 就可以看到了

学习笔记Day13:Linux进阶

Linux进阶 Vim——Linux自带的文本编辑器 功能强大 命令模式 使用 vim <file>进入后的默认模式可以上下左右移动光标 方向键/hjkl快速到所在行的开头^/末尾$向下移动30行30j&#xff08;上左右同&#xff09;上下翻页Ctrlf向上&#xff0c;Ctrlb向下翻页快速回到文件第…

docker 进入容器内部命令

docker容器运行了&#xff0c;怎么进入容器内部查看内部的文件情况呢&#xff1f; 答&#xff1a;可以通过docker exec 的命令查看。 docker exec --help 可以查看命令介绍 &#xff1a; docker exec -it XXX /bin/bash XX为容器ID 进入容器内部 /bin/bash是需要添加的 不…

MT管理器 使用手册

MT管理器 论坛&#xff1a;https://bbs.binmt.cc/ 使用技巧系列教程&#xff1a;https://www.52pojie.cn/thread-1259872-1-1.html MT管理器 使用手册 &#xff1a;https://mt2.cn/guide/&#xff1a;https://www.bookstack.cn/read/mt-manual/80b8084f6be128c0.md&#xff…

vue学习日记15:普通组件的注册使用

一、概念 &#xff08;1&#xff09;局部注册 &#xff08;2&#xff09;全局注册 二、实践 1.局部注册 &#xff08;1&#xff09;代码 步骤&#xff1a;创建组件 导入 注册 使用 src文件夹下面仅仅保留这两个即可 其他两个文件夹可以删除 在src下面建立components文件夹…

刷题DAY30 | LeetCode 332-重新安排行程 51-N皇后 37-解数独

332 重新安排行程&#xff08;hard&#xff09; 给你一份航线列表 tickets &#xff0c;其中 tickets[i] [fromi, toi] 表示飞机出发和降落的机场地点。请你对该行程进行重新规划排序。 所有这些机票都属于一个从 JFK&#xff08;肯尼迪国际机场&#xff09;出发的先生&…

Qt 不同数据类型转换

一.不同类型数据转换示例&#xff1a; #include <QGuiApplication> #include <QQmlApplicationEngine> #include <QJsonDocument> #include <QJsonObject> #include <QDebug>int main(int argc, char *argv[]) {QCoreApplication::setAttribute…

【C语言】linux内核pci_enable_device函数和_PCI_NOP宏

pci_enable_device 一、注释 static int pci_enable_device_flags(struct pci_dev *dev, unsigned long flags) {struct pci_dev *bridge;int err;int i, bars 0;/** 此时电源状态可能是未知的&#xff0c;可能是由于新启动或者设备移除调用。* 因此获取当前的电源状态&…

【Flask】Flask项目结构初识

1.前提准备 Python版本 # python 3.8.0 # 查看Python版本 python --version 安装第三方 Flask pip install flask # 如果安装失败&#xff0c;可以使用 -i&#xff0c;指定使用国内镜像源 # 清华镜像源&#xff1a;https://pypi.tuna.tsinghua.edu.cn/simple/ 检查 Flask 是…

网络: 网络层

IP地址: 分为网络号和主机号. 用来标识主机 IP协议 IP协议报文 4位版本号(version): 指定IP协议的版本, 对于IPv4来说, 就是4.4位头部长度(header length): IP头部的长度是多少个32bit, 也就是 length * 4 的字节数. 4bit表示最大的数字是15, 因此IP头部最大长度是60字节. 8…

传输介质介绍,数据链路层,MAC地址的构成和作用

简单网络 1.网卡 2.物理介质 3.协议栈 双绞线&#xff1a; UTP 非屏蔽双绞线 屏蔽式双绞线 水晶头 串口电缆&#xff1a;连接运营商 广域网一个用户接入到广域网&#xff0c;早期来讲&#xff0c;光纤 物理层&#xff1a;本质是通信&#xff0c;数据传输&#xff0c;介质产…

数据结构02:线性表 链表习题01[C++]

考研笔记整理~&#x1f95d;&#x1f95d; 之前的博文链接在此&#xff1a;数据结构02&#xff1a;线性表[顺序表链表]_线性链表-CSDN博客~&#x1f95d;&#x1f95d; 本篇作为链表的代码补充&#xff0c;供小伙伴们参考~&#x1f95d;&#x1f95d; 第1版&#xff1a;王道…

3.21小题总结

第一题&#xff1a;生日蛋糕 题解&#xff1a;这题是蛋糕结构是一层一层的&#xff0c;估计很多人很快就能想到是dfs&#xff0c;但是这题的难想的点在于 你每层的状态该怎么去确定&#xff0c;你怎么来确定每层的半径和高度是多少&#xff0c;一开始我也不知很理解&#xff0…

计算结构体的大小(结构体的内存对齐)

一&#xff1a;问题 问题所在&#xff1a;两个结构体应该都是6个字节大小&#xff0c;为什么一个12&#xff0c;一个6&#xff1f;&#xff1f;&#xff1f; 二&#xff1a;如何正确的计算结构体大小&#xff1f; 首先得掌握结构体的对齐规则&#xff1a; 第一&#xff1a; 第一…

Leetcode 994. 腐烂的橘子

心路历程&#xff1a; 一开始以为和刚做过的岛屿问题很像&#xff0c;只不过是把岛屿问题换成BFS去做&#xff0c;然后再加上一些计数的规则。结果做完后发现只能通过一半左右的测试用例&#xff0c;发现有一个逻辑错误在于&#xff0c;当腐烂的橘子位于两端时&#xff0c;可以…

约数(因数)问题(ACwing算法笔记)

869.试除法求约数 注意点&#xff1a; 1.试除法就是让i遍历的最大值到a/i。 2.约数成对存在&#xff0c;只遍历前一部分即可。 代码&#xff1a; #include<iostream> #include<queue> #include<algorithm> #include<cstring> #include<cmath>…