opencv的框架与各模块功能介绍

2023-05-16

记录一下自己的所学知识,便于日后回顾与整理。文中内容多为摘录,具体链接如下:

摘录自:https://zhuanlan.zhihu.com/p/33008701(框架介绍)

              http://blog.csdn.net/poem_qianmo/article/details/19925819(各模块介绍,opencv2版,毛星云)

              http://blog.csdn.net/zmdsjtu/article/details/54924727(opencv3与opencv2的对比,很棒!)

官方文档:

opencv官网:https://opencv.org/

opencv库各版本下载:https://sourceforge.net/projects/opencvlibrary/files/

opencv中文网站论坛:http://www.opencv.org.cn/

opencv 1.x中文文档:http://wiki.opencv.org.cn/index.php/%E9%A6%96%E9%A1%B5

opencv 2.3文档:http://www.opencv.org.cn/opencvdoc/2.3.2/html/index.html

opencv 3.4文档:https://docs.opencv.org/master/

 1.1 opencv介绍

        OpenCV (Open Source Computer Vision Library: http://opencv.org) is an open-source BSD-licensed library that includes several hundreds of computer vision algorithms. The document describes the so-called OpenCV 2.x API, which is essentially a C++ API, as opposite to the C-based OpenCV 1.x API. The latter is described in opencv1x.pdf.

OpenCV has a modular structure, which means that the package includes several shared or static libraries. The following modules are available:

    Core functionality - a compact module defining basic data structures, including the dense multi-dimensional array Mat and basic functions used by all other modules.
    Image processing - an image processing module that includes linear and non-linear image filtering, geometrical image transformations (resize, affine and perspective warping, generic table-based remapping), color space conversion, histograms, and so on.
    video - a video analysis module that includes motion estimation, background subtraction, and object tracking algorithms.
    calib3d - basic multiple-view geometry algorithms, single and stereo camera calibration, object pose estimation, stereo correspondence algorithms, and elements of 3D reconstruction.
    features2d - salient feature detectors, descriptors, and descriptor matchers.
    objdetect - detection of objects and instances of the predefined classes (for example, faces, eyes, mugs, people, cars, and so on).
    highgui - an easy-to-use interface to simple UI capabilities.
    Video I/O - an easy-to-use interface to video capturing and video codecs.
    gpu - GPU-accelerated algorithms from different OpenCV modules.
    ... some other helper modules, such as FLANN and Google test wrappers, Python bindings, and others.

The further chapters of the document describe functionality of each module. But first, make sure to get familiar with the common API concepts used thoroughly in the library.
                                                                                                                                    -----以上摘录自官方文档

      OpenCV(Open Source Computer Vision Library)开放源代码计算机视觉库,主要算法涉及图像处理、计算机视觉和机器学习相关方法。OpenCV 其实就是一堆 C 和 C++语言的源代码文件,这些源代码文件中实现了许多常用的计算机视觉算法。

       OpenCV由一系列C函数和C++类构成,它有C,C++,Python和java接口,当前SDK(Software Development Kit软件开发工具包) 已经支持C++、Java、Python等语言应用开发, 当前OpenCV本身新开发的算法和模块接口都是基于C++产生。

       其覆盖了工业产品检测、医学成像、无人机飞行、无人驾驶、安防、 卫星地图与电子地图拼接、信息安全、用户界面、摄像机标定、立体视觉和机器人等计算机视觉应用领域。

       图像处理(Image Processing)是用计算机对图像进行分析,以达到所需结果的技术。图像处理技术一般包括图像压缩,增强和复原,匹配、描述和识别3个部分。数字图像处理(Digital Image Processing)是通过计算机对图像进行去除噪声、增强、复原、分割、提取特征等处理的方法和技术。

       计算机视觉(Computer Vision)是指用摄像机和电脑代替人眼对目标进行识别、跟踪和测量等机器视觉,并进一步做图形处理,使之成为更适合人眼观察或仪器检测图像的一门学科。


1.2 opencv架构

                             

                       

opencv2文件夹所含模块如下图所示:

          

     

                

各主要模块介绍:

【core】--核心功能模块,包含以下内容:

    OpenCV基本数据结构
    动态数据结构
    绘图函数
    数组操作相关函数
    辅助功能与系统函数和宏
    与OpenGL的互操作


【imgproc】--图像处理模块,包含以下内容:

    线性和非线性的图像滤波
    图像的几何变换
    其它(Miscellaneous)图像转换
    直方图相关
    结构分析和形状描述
    运动分析和对象跟踪
    特征检测
    目标检测等内容


【features2D】--2D功能模块,包含以下内容:

    特征检测和描述
    特征检测器(Feature Detectors)通用接口
    描述符提取器(Descriptor Extractors)通用接口
    描述符匹配器(Descriptor Matchers)通用接口
    通用描述符(Generic Descriptor)匹配器通用接口
    关键点绘制函数和匹配功能绘制函数


【highgui】--高层gui图形用户界面(high GUI),包含:

    媒体的I / O输入输出

    视频捕捉

    图像和视频的编码解码

    图形交互界面的接口等内容

    关键点绘制函数和匹配功能绘制函数

    关键点绘制函数和匹配功能绘制函数


【ml】——Machine Learning,机器学习模块, 基本上是统计模型和分类算法,包含如下内容:

    统计模型 (Statistical Models)
    一般贝叶斯分类器 (Normal Bayes Classifier)
    K-近邻 (K-NearestNeighbors)
    支持向量机 (Support Vector Machines)
    决策树 (Decision Trees)
    提升(Boosting)
    梯度提高树(Gradient Boosted Trees)
    随机树 (Random Trees)
    超随机树 (Extremely randomized trees)
    期望最大化 (Expectation Maximization)
    神经网络 (Neural Networks)
    MLData


【calib3d】——其实就是就是Calibration(校准)加3D这两个词的组合缩写。这个模块主要是相机校准和三维重建相关的内容。基本的多视角几何算法,单个立体摄像头标定,物体姿态估计,立体相似性算法,3D信息的重建等等。

【contrib】——也就是Contributed/Experimental Stuf(贡献、实验部分)的缩写, 该模块包含了一些最近添加的不太稳定的可选功能,不用去多管。2.4.8里的这个模块有新型人脸识别,立体匹配,人工视网膜模型等技术。我所安装的opencv3.4版本已将此模块去掉啦

【flann】—— Fast Library for Approximate Nearest Neighbors,高维的近似近邻快速搜索算法库,包含两个部分:

    快速近似最近邻搜索

    聚类  

【legacy】——  一些已经废弃的代码库,保留下来作为向下兼容,包含如下相关的内容:

                                     运动分析

                                     期望最大化

                直方图
                平面细分(C API)
                特征检测和描述(Feature Detection and Description)
                描述符提取器(Descriptor Extractors)的通用接口
                通用描述符(Generic Descriptor Matchers)的常用接口
                匹配器

【nonfree】,也就是一些具有专利的算法模块 ,包含特征检测和GPU相关的内容。最好不要商用,可能会被告哦。

 【objdetect】——目标检测模块,包含Cascade Classification(级联分类)和Latent SVM这两个部分。

 【ocl】——即OpenCL-accelerated Computer Vision,运用OpenCL加速的计算机视觉组件模块

 【photo】——也就是Computational Photography,包含图像修复和图像去噪两部分

 【stitching】——images stitching,图像拼接模块,包含如下部分:

    拼接流水线
    特点寻找和匹配图像
    估计旋转
    自动校准
    图片歪斜
    接缝估测
    曝光补偿
    图片混合

【superres】——SuperResolution,超分辨率技术的相关功能模块

 【ts】——opencv测试相关代码,不用去管他

 【video】——视频分析组件,该模块包括运动估计,背景分离,对象跟踪等视频处理相关内容。

 【Videostab】——Video stabilization,视频稳定相关的组件,官方文档中没有多作介绍,不管它了。

注意:opcv3新增了shape模块!

【shape】--形状的匹配以及距离计算SHAPE

Shape Distance and Matching,形状的距离以及匹配
//对这部分了解不是很多,只能形而上学地复制过来了
Opencv3特有的部分,Opencv2.4并没有…
1. AffineTransformer仿射变换算法的包装类
2. HistogramCostExtractor
3. HausdorffDistanceExtractor
4. ShapeContextDistanceExtractor
5. ThinPlateSplineShapeTransformer

1.3 opencv2和opencv3的区别

    旧版opencv已包含的模块:

       

opencv3和opencv2的区别:

          

列举几条:

(1)opencv3新增了Shape模块

(2)cv3新增了Logistic Regression(逻辑回归):类似于SVM也是一种多分类器

(3)cv3删掉了contrib模块


1.4 使用方法

    实际上,opencv将每个模块中的源文件编译成一个库文件 ,用户在使用时, 仅将所需的库文件添加到自己的项目中,与自己的源文件一起连接成可执行程序即可。



原文:https://blog.csdn.net/u012679707/article/details/79505279
 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

opencv的框架与各模块功能介绍 的相关文章

  • 如何使用 opencv 从字节显示视频?

    我正在开展一个项目 其中我们使用无线电调制解调器将数据 视频和遥测 从无人机传输到地面站 我们需要做的是实时显示视频 并能够知道 C 中的每一块遥测数据对应哪一帧 数据被解封装为遥测和视频 mpeg4 字节 由于我对 OpenCV 有一些经
  • OpenCV Java:如何访问 findNonZero() 返回的坐标?

    在我的 Android 应用程序中 我正在使用findNonZero 查找并访问二值图像中的白点 我得到了图像 binMat大小 595 800 作为方法的输入 然后我有 Mat wLocMat Mat zeros binMat size
  • 视频文件中的感兴趣区域

    这是我第一次在这里发帖 希望能得到积极的结果 因为我的研究已接近尾声 我想在我的代码中添加一个函数 该函数将仅处理视频文件的定义的感兴趣区域 我无法发布图片 因为我还没有声誉 但这里发布了同样的问题 gt http answers open
  • 打开 CV 通用 Mat 函数头

    在 OpenCV 中 访问一个像素是很常见的 Mat像这样的对象 float b A at
  • 删除图像中小于 n 大小(噪声)的像素 - open CV python

    我正在尝试减少图像中的噪音 目前正在运行此代码 import numpy as np import argparse import cv2 from skimage import morphology Construct the argum
  • Android Camera2 API - 实时显示处理后的帧

    我正在尝试创建一个实时处理相机图像并将其显示在屏幕上的应用程序 我正在使用camera2 API 我创建了一个本机库来使用 OpenCV 处理图像 到目前为止 我已经成功设置了一个 ImageReader 来接收 YUV 420 888 格
  • 在进行字符识别之前使用 OpenCV 进行图像预处理(超正方体)

    我正在尝试开发简单的 PC 应用程序用于车牌识别 Java OpenCV Tess4j 图像不是很好 进一步它们会很好 我想对超立方体图像进行预处理 但我被困在车牌检测 矩形检测 上 我的步骤 1 源图像 Mat img new Mat i
  • 使用 OpenCL 支持构建 OpenCV

    在 CMake 中 我使用 OpenCL Enable ON 构建了 OpenCV 它自动检测到OPENCL INCLUDE DIR路径但是OPENCL LIBRARY即使单击配置后也是空的 为了OPENCL LIBRARY我也没有看到浏览
  • ld:找不到 -llibtbb.dylib 的库

    我尝试从 opencv 2 4 8 apps haarfinder 编译一些文件 但出现以下错误 ld library not found for llibtbb dylib 注意双l在文件名中 我尝试按照这里的教程进行操作 http co
  • iOS 上的 OpenCV - GPU 使用情况?

    我正在尝试开发一个 iOS 应用程序 可以对来自相机的视频执行实时效果 就像 iPad 上的 Photobooth 一样 我熟悉 OpenCV 的 API 但如果大多数处理是在 CPU 上完成而不是在 GPU 上完成 我担心 iOS 上的性
  • OpenCV 在使用 anaconda 的 Linux 上无法与 python 正常工作。收到 cv2.imshow() 未实现的错误

    这就是我得到的确切错误 我的操作系统是 Ubuntu 16 10 OpenCV 错误 未指定错误 该功能未实现 使用 Windows GTK 2 x 或 Carbon 支持重新构建库 如果您使用的是 Ubuntu 或 Debian 请安装
  • 使用 OpenCV 查找重叠/复杂的圆

    我想计算红圈半径 图2 我在使用 OpenCV 的 HoughCircles 找到这些圆圈时遇到了麻烦 如图所示 2 我只能使用 HoughCircles 找到中心以黑色显示的小圆圈 original fig 2 由于我知道红色圆圈的中心
  • 在 iPad 上使用 OpenCV 避免碰撞

    我正在开展一个项目 需要使用 OpenCV 实现碰撞避免 这是在 iOS 上完成的 iOS 5 及以上版本即可 项目目标 这个想法是将 iPad 安装在汽车仪表板上并启动应用程序 应用程序应该从相机中抓取帧并进行处理 以检测汽车是否会与任何
  • 在opencv中保存帧而不压缩

    我正在尝试使用写 OpenCV 函数 我想保存帧 TIFF扩大 我遇到的问题是保存的图像被压缩 所以我无法使用它们 知道如何摆脱这种压缩吗 提前致谢 不要介意西奇说的话 TIFF 标志通过 LZW 压缩硬编码在 opencv 二进制文件中
  • 如何将 OpenCV 等待键与 Chaquopy 一起使用

    我正在尝试使用 Chaquopy 将计算机视觉应用程序移植到 Android 当我尝试运行脚本时 以下行中出现以下错误 cv2 waitKey 100 打印到嵌入式 python 控制台的错误是 java chaquopy CQPEnv c
  • 如何使用requirements.txt 在 Heroku python Web 应用程序中安装 Dlib?

    我构建了一个涉及机器学习的 Python Flask Web API 但在 Heroku 上部署它时遇到了很多挫折 问题是 我的应用程序依赖于 Dlib 一个库 我似乎找不到在我的 Heroku 服务器中安装的方法 我正在试图解决这个问题
  • 如何使图像呈现出陈旧、布满灰尘、颜色褪色的外观?

    我有旧画的图像 这些画很旧 布满灰尘 颜色褪色 如图所示here https i stack imgur com xuoEF jpg 如何赋予任何图像这种 旧 外观 我找不到任何过滤器或 openCV 函数来实现这种类型的外观 EDIT 我
  • C++ OpenCV 2.3 中缺少 MoveWindow()

    我正在使用 OpenCV 2 3 的 C 版本 并且正在努力完成一项基本任务 我想做的是创建一个窗口并将其移动到屏幕上的特定位置 例如使用 cv namedWindow My Window 1 cv MoveWindow My Window
  • 如何解决 Python 'Pyzbar' 库的导入错误?

    我刚刚开始熟悉 Pyzbar 库 但是当使用decode方法我得到一个错误 这是代码 import cv2 import numpy as np import pyzbar code image cv2 imread C Users Ace
  • 如何使用 OpenCV 检测图像帧中的对象?

    我正在使用 Raspberry Pi 开发一个漫游器 它将清扫房间并捡起掉落在地上的物体 为了检测物体 我使用了在流动站操作开始时拍摄的参考图像 以及每 10 秒单击一次的图像 新图像 为了确定图像帧是否发生变化 我在参考图像和新图像之间进

随机推荐