IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 计算机视觉算法库OpenCV4.5.3+OpenCV_contrib 4.5.3资料精讲 -> 正文阅读

[人工智能]计算机视觉算法库OpenCV4.5.3+OpenCV_contrib 4.5.3资料精讲

OpenCV4.5.3及OpenCV_contrib 4.5.3

前段时间有个实习生来这边实习,已经申请到卡耐基梅隆大学 机器人专业的博士生,主攻机器视觉。本着负责的态度,从头到尾讲述了伟大的开源且跨平台的计算机视觉库OpenCV,谨以此记录工作点滴。

以下:

安装环境:VS2017? 64 ?+ OpenCV4.53 + OpenCV_contrib 4.5.3

OpenCVhttps://github.com/opencv/opencv

OpenCV_contrib :https://github.com/opencv/opencv_contrib

老规矩,一句话讲清问题:

OpenCV:开源且可跨平台的计算机视觉算法库,可用于开发实时的图像处理、计算机视觉以及模式识别等应用。

OpenCV_contrib:OpenCV的扩展包,包含尚未正式发布的新算法,如人脸识别、生物视觉、特征点提取等众多强大的算法。

搞懂OpenCV,首先要了解OpenCV的文件及内容。解压完opencv4.5.3后在文件夹中有两个文件夹,buildsources?

build文件夹是opencv编译后生成的hhpplib文件;编译指cmake编译。(可发者调用接口)

sources文件夹是opencv中的源代码cpp文件;(函数具体实现)。一般的非开源的项目程序是不开放源代sources文件,但opencv作为一个开源库比较OPEN.

一、build文件

build文件夹中,如下,

?

doc文件夹下是各种关于OpenCV介绍的文档

include文件夹包含所有的头文件

javapython语言用库、x64? win

两个cmake文件都是cmake的一些配置,很强大的编译工具

include文件中opencv2头文件

注意:“cv2”中的“2”并不表示OpenCV的版本号。我们知道,OpenCV是基于C/C++的,“cv”和“cv2”表示的是底层C API和C++API的区别,cv2”表示使用的是C++ API。这主要是一个历史遗留问题,是为了保持向后兼容性。

?

注意:hppHeader Plus Plus的简写,与 .h 文件类似。但与之不同的是,.hpp*.cpp中的实现代码也写入其中,使得定义与实现都包含在同一文件中。这样做带来的好处显而易见,无需再将cpp文件添加到项目中编译,减少了编译次数,也不用发布烦人的lib,dll 文件,因此非常适合用来编写公用的开源库。

opencv.hpp文件:

#ifndef OPENCV_ALL_HPP

#define OPENCV_ALL_HPP

#include "opencv2/opencv_modules.hpp"

#include "opencv2/core.hpp"

#ifdef HAVE_OPENCV_CALIB3D

#include "opencv2/calib3d.hpp"

#endif

#ifdef HAVE_OPENCV_FEATURES2D

#include "opencv2/features2d.hpp"

#endif

#ifdef HAVE_OPENCV_DNN

#include "opencv2/dnn.hpp"

#endif

#ifdef HAVE_OPENCV_FLANN

#include "opencv2/flann.hpp"

#endif

#ifdef HAVE_OPENCV_HIGHGUI

#include "opencv2/highgui.hpp"

#endif

#ifdef HAVE_OPENCV_IMGCODECS

#include "opencv2/imgcodecs.hpp"

#endif

#ifdef HAVE_OPENCV_IMGPROC

#include "opencv2/imgproc.hpp"

#endif

#ifdef HAVE_OPENCV_ML

#include "opencv2/ml.hpp"

#endif

#ifdef HAVE_OPENCV_OBJDETECT

#include "opencv2/objdetect.hpp"

#endif

#ifdef HAVE_OPENCV_PHOTO

#include "opencv2/photo.hpp"

#endif

#ifdef HAVE_OPENCV_STITCHING

#include "opencv2/stitching.hpp"

#endif

#ifdef HAVE_OPENCV_VIDEO

#include "opencv2/video.hpp"

#endif

#ifdef HAVE_OPENCV_VIDEOIO

#include "opencv2/videoio.hpp"

#endif

#endif

每个模块其解释如下:

CALIB3DCalibration(校准)加3D这两个词的组合缩写。这个模块主要是相机校准三维重建相关的内容。包含:

  • 基本的多视角几何算法
  • 单个立体摄像头标定
  • 物体姿态估计
  • 立体相似性算法
  • 3D信息的重建等等。

CONTRIB Contributed/Experimental Stuf的缩写, 该模块包含了一些最近添加的不太稳定的可选功能,不用去多管。2.4.8之后有新型人脸识别, 立体匹配 ,人工视网膜模型等技术。

CORE 核心功能模块,尤其是底层数据结构和算法函数。包含如下内容:OpenCV基本数据结构、动态数据结构、绘图函数、数组操作相关函数、辅助功能与系统函数和宏。

IMGPROC ImageProcessing这两个单词的缩写组合。图像处理模块,这个模块包含:

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

FEATURES2DFeatures2D 2D功能框架 ,包含兴趣点检测子、描述子以及兴趣点匹配框架。包含:

  • 特征检测和描述
  • 特征检测器(Feature Detectors)通用接口
  • 描述符提取器(Descriptor Extractors)通用接口
  • 描述符匹配器(Descriptor Matchers)通用接口
  • 通用描述符(Generic Descriptor)匹配器通用接口

FLANN Fast Library for Approximate Nearest Neighbors,高维的近似近邻快速搜索算法库, 包含两个部分:快速近似最近邻搜索和聚类。

GPU 运用GPU加速的计算机视觉模块。

HIGHGUI 也就是high gui,高层GUI图形用户界面,包含媒体的I / O输入输出, 视频捕捉、图像和视频的编码解码、图形交互界面的接口等内容。

LEGACY 一些已经废弃的代码库,保留下来作为向下兼容,包含:

  • 运动分析
  • 期望最大化
  • 直方图
  • 平面细分(C API
  • 特征检测和描述(Feature Detection and Description
  • 描述符提取器(Descriptor Extractors)的通用接口
  • 通用描述符(Generic Descriptor Matchers)的常用接口

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

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,视频稳定相关的组件。

X64文件(X64->64位,X86->32位)

bin文件夹下:dll文件,动态链接库。具体实现的内容。计算机环境变量中,这个路径是要加到path中的。

lib文件夹下:配置opencv环境时,添加的lib库。用来链接。

二、sources文件

samples:是一些简短的学习用例。

modules:包含了所有的源文件。

doc:是一些文档,包含一些教程。

include:是所有的头文件。包含opencvopencv2

3rdparty:第三方库,如ffmpeg视频编码等。

apps:一些应用,比如级联分类器,haar特征分类器。

cmake:编译相关。

data:级联分类器的一些数据。比如人脸检测、人眼检测等。

platform:平台相关,iOSAndroidLinuxscriptwin

三、opencv_contrib文件

opencv_contribopencv的扩充,包含了许多最新的以及可能还没有正式发布有待进一步完善的算法,可以理解为是OpenCV的扩展包;同时在OpenCV 3.0以后,SIFTSURF等特征算法也放到contrib库。如果想使用SIFT算子,则必须要安装Contrib库。

下载地址:https://github.com/opencv/opencv_contrib

This repository is intended for the development of so-called "extra" modules, contributed functionality. New modules quite often do not have stable API, and they are not well-tested. Thus, they shouldn't be released as a part of official OpenCV distribution, since the library maintains binary compatibility, and tries to provide decent performance and stability.

So, all the new modules should be developed separately, and published in the opencv_contrib repository at first. Later, when the module matures and gains popularity, it is moved to the central OpenCV repository, and the development team provides production-quality support for this module.

这个存储库旨在开发所谓的“额外”模块和贡献的功能。 新模块通常没有稳定的API,它们也没有经过良好的测试。 因此,它们不应该作为官方OpenCV发行版的一部分发布,因为该库保持二进制兼容性,并试图提供良好的性能和稳定性。

因此,所有新模块都应该单独开发,并首先在opencv_contrib存储库中发布。 稍后,当该模块成熟并流行起来时,它将被转移到中央OpenCV存储库,开发团队将为该模块提供生产质量的支持。?

?

Contrib部分模块功能介绍如下:

aruco :增强现实

bgsegm:背景分割;算法包括:统计背景图估计、像素级贝叶斯分割

bioinspired:生物视觉;基于生物视觉模型:最小化噪声、亮度变化、瞬间事件分割、高动态范围色调映射方法

ccalib:自定义标定;三维重建、全方向的相机标定、随机模式标定、多相机标定

cnn_3dobj CNN物体识别和姿态估计;基于Caffe深度学习框架,训练、检测物体识别和姿态的CNN模型

cvv:计算机视觉调试的交互GUI

可以添加其中代码,可以在调试的时候弹出窗口进行交互,方便调试使用

datasets:数据集读取器

dnn_objdetect CNNs 的物体检测模型

使用简洁的CNN模型进行物体检测,使用caffe进行训练,但是使用 opencv_dnn模型进行识别

face:人脸识别,人脸识别的一些方法:Eigen, Fisher and LBPH(Local Binary Pattern Histograms)

fuzzy:视觉的模糊逻辑,模糊逻辑图像变换、逆;模糊逻辑图像的处理

optflow:光流,一些运行和估计光流的算法,光流包括 deepflowsimpleflowsparsetodenseflowsihouette flow

ovis3D可视化,使用OGRE 3D引擎去可视化3D数据

rgbdRGB-Depth处理模块

Linemod 3D物体识别,快速3D表面法线和3D平面查找、3D视觉里程计、使用 KinectFusion进行3D重建

sfm2D3D的算法

这个模块的核心是一个轻量级的Libmv,包含一些从2D图像到3D重建的算法

stereo:立体匹配使用不同的描述子进行立体匹配:Census / CS-Census / MCT / BRIEF / MV ,和使用 Quasi 立体的方法进行稠密立体匹配;

structured_light:结构光利用结构光去分析场景深度

surface_matching:平面匹配使用PPF特征进行3D物体识别和定位

tracking:目标跟踪

xfeatures2d 2d特征算法,一些额外的实验性或者不是免费的2D特征检测、描述子的算法:SURF, SIFT, BRIEF, Censure, Freak, LUCID, Daisy, Self-similar.

ximgproc:扩展的图像处理,结构森林、一些滤波器(Domain Transform Filter / Guided Filter / Adaptive Manifold Filter / Joint Bilateral Filter / Superpixels / Ridge Detection Filter)

xobjdetect:增强的2d物体检测;级联检测器 LBP+_WaldBoost

xphoto:额外的照片处理;颜色均衡、降噪、图像修复

hdf——分层数据格式 I/O 例程。

hfs——用于高效图像分割的分层特征选择,包含一种高效的图像分割算法。

img_hash——提供提取图像散列的算法,以及快速计算出海量数据集中最相似图像的方法。

line_descriptor——在图像中寻找一种新的代表性信息,并为其提取和表示提供功能。特别地,与先前用于检测图像内相关元素的方法不同,提取线代替点;定义了一个新类,用于汇总线的特性,以便于重用和打印。

参考连接:

@ 夏洛的网 OpenCV库文件介绍_I am what i am-CSDN博客_opencv库

@ 赵旭辉? OpenCV Contrib扩展模块介绍与安装(Python)

@朱铭德 OpenCV_contrib模块概述_朱铭德的博客-CSDN博客_opencv_contrib

以上,OpenCV4.5.3+OpenCV-Contrib文件介绍。下一篇分享如何在Windows系统及Linux系统下安装及使用。

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-12-16 17:40:43  更:2021-12-16 17:42:08 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年6日历 -2024/6/18 11:21:39-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码