| |
|
开发:
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 OpenCV :https://github.com/opencv/opencv OpenCV_contrib :https://github.com/opencv/opencv_contrib 老规矩,一句话讲清问题: OpenCV:开源且可跨平台的计算机视觉算法库,可用于开发实时的图像处理、计算机视觉以及模式识别等应用。 OpenCV_contrib:OpenCV的扩展包,包含尚未正式发布的新算法,如人脸识别、生物视觉、特征点提取等众多强大的算法。 搞懂OpenCV,首先要了解OpenCV的文件及内容。解压完opencv4.5.3后在文件夹中有两个文件夹,build和sources。? build文件夹是opencv编译后生成的h、hpp、lib文件;编译指cmake编译。(可发者调用接口) sources文件夹是opencv中的源代码cpp文件;(函数具体实现)。一般的非开源的项目程序是不开放源代sources文件,但opencv作为一个开源库比较OPEN. 一、build文件 在build文件夹中,如下, ? doc文件夹下是各种关于OpenCV介绍的文档; include文件夹包含所有的头文件; java、python语言用库、x64? win库 两个cmake文件都是cmake的一些配置,很强大的编译工具。 include文件中opencv2头文件 注意:“cv2”中的“2”并不表示OpenCV的版本号。我们知道,OpenCV是基于C/C++的,“cv”和“cv2”表示的是底层C API和C++API的区别,“cv2”表示使用的是C++ API。这主要是一个历史遗留问题,是为了保持向后兼容性。 ? 注意:hpp是Header 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 每个模块其解释如下: CALIB3D:Calibration(校准)加3D这两个词的组合缩写。这个模块主要是相机校准和三维重建相关的内容。包含:
CONTRIB: Contributed/Experimental Stuf的缩写, 该模块包含了一些最近添加的不太稳定的可选功能,不用去多管。2.4.8之后有新型人脸识别, 立体匹配 ,人工视网膜模型等技术。 CORE: 核心功能模块,尤其是底层数据结构和算法函数。包含如下内容:OpenCV基本数据结构、动态数据结构、绘图函数、数组操作相关函数、辅助功能与系统函数和宏。 IMGPROC: Image和Processing这两个单词的缩写组合。图像处理模块,这个模块包含:
FEATURES2D:Features2D, 2D功能框架 ,包含兴趣点检测子、描述子以及兴趣点匹配框架。包含:
FLANN: Fast Library for Approximate Nearest Neighbors,高维的近似近邻快速搜索算法库, 包含两个部分:快速近似最近邻搜索和聚类。 GPU: 运用GPU加速的计算机视觉模块。 HIGHGUI: 也就是high gui,高层GUI图形用户界面,包含媒体的I / O输入输出, 视频捕捉、图像和视频的编码解码、图形交互界面的接口等内容。 LEGACY: 一些已经废弃的代码库,保留下来作为向下兼容,包含:
ML: Machine Learning,机器学习模块, 基本上是统计模型和分类算法,包含如下内容。
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:是所有的头文件。包含opencv和opencv2。 3rdparty:第三方库,如ffmpeg视频编码等。 apps:一些应用,比如级联分类器,haar特征分类器。 cmake:编译相关。 data:级联分类器的一些数据。比如人脸检测、人眼检测等。 platform:平台相关,iOS、Android、Linux、script、win。 三、opencv_contrib文件 opencv_contrib是opencv的扩充,包含了许多最新的以及可能还没有正式发布有待进一步完善的算法,可以理解为是OpenCV的扩展包;同时在OpenCV 3.0以后,SIFT、SURF等特征算法也放到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:光流,一些运行和估计光流的算法,光流包括 deepflow、simpleflow、sparsetodenseflow、sihouette flow等 ovis:3D可视化,使用OGRE 3D引擎去可视化3D数据 rgbd:RGB-Depth处理模块 Linemod 3D物体识别,快速3D表面法线和3D平面查找、3D视觉里程计、使用 KinectFusion进行3D重建 sfm:2D到3D的算法 这个模块的核心是一个轻量级的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系统下安装及使用。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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年11日历 | -2024/11/27 0:35:36- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |