开源计算机视觉库OpenCV详解

开源计算机视觉库OpenCV详解-CSDN博客

前言:

😊😊😊欢迎来到本博客😊😊😊

🌟🌟🌟 本专栏主要结合OpenCV和C++来实现一些基本的图像处理算法并详细解释各参数含义,适用于平时学习、工作快速查询等,随时更新。

😊😊😊 具体食用方式:可以点击本专栏【OpenCV快速查找(更新中)】–>搜索你要查询的算子名称或相关知识点,或者通过这篇博客👉通俗易懂OpenCV(C++版)详细教程——OpenCV函数快速查找(不断更新中)]查阅你想知道的知识,即可食用。

🎁🎁🎁支持:如果觉得博主的文章还不错或者您用得到的话,可以悄悄关注一下博主哈,如果三连收藏支持就更好啦!这就是给予我最大的支持!😙😙😙

文章目录
学习目标
一、 初识OpenCV
二、 OpenCV模块介绍
2.1 模块详解
2.2 OpenCV2.x & OpenCV3.x区别
2.3 使用方法
三、 总结
学习目标
 初识OpenCV,了解OpenCV相关背景知识
 了解OpenCV相关模块
一、 初识OpenCV
  OpenCV(全称:Open Source Computer Vision Library)是开源的计算机视觉和机器学习库,提供了C++、C、Python、Java接口,并支持Windows、Linux、Android、Mac OS平台。OpenCV自1999年问世以来,就已经成为计算机视觉领域学者和开发人员的首选工具。
  OpenCV是由Intel的小组进行开发的,在发布了一系列Beta版本后,1.0版本终于在2006年面市,2009年发布了重要的版本OpenCV 2.X,现在已经是2.4.13版本;从2014年开始,在继续更新OpenCV 2.X版本的同时,发布了OpenCV 3.X版本,现在已经更新到4.6版本了(截止2022.11)。

二、 OpenCV模块介绍
2.1 模块详解
  这里以在Windows下OpenCV 2.x版本为例,介绍整个OpenCV开发包的构成。解压缩所下载的OpenCV压缩包主要有两个文件夹,分别为build和sources。


  sources是用来存放源码的,在其子文件夹modules下列出了OpenCV实现的各个模块。
  其中core、highgui和imgproc是最基础的模块,也是学习OpenCV的起点。
  本专栏主要以这三个模块为基础,重点介绍图像处理基础方法的数学原理。对于其他更高层次的方向及应用也会有相关介绍。

具体模块如下:

模块名    注释    包含内容
core    是OpenCV的核心模块,包含了最基本的结构(矩阵,点线和形状等),以及相关的基础运算/操作。    OpenCV基本数据结构;动态数据结构;绘图函数;数组操作相关函数;辅助功能与系统函数和宏;与OpenGL的互操作
imgproc    图像处理模块,包括图像相关的基础功能(滤波,梯度,改变大小等)和一些高级功能,即图像分割,直方图,形态分析和边缘/直线提取等。    线性和非线性的图像滤波; 图像的几何变换;其它(Miscellaneous)图像转换;直方图相关;结构分析和形状描述;运动分析和对象跟踪;特征检测;目标检测等内容
highgui    提供了用户界面和文件读取的基本函数,比如图像显示窗口的生成和控制,图像/视频文件的IO等,,可认为是一个轻量级的Windows UI 工具。    媒体的I / O输入输出;视频捕捉;图像和视频的编码解码; 图形交互界面的接口等内容;关键点绘制函数和匹配功能绘制函数;关键点绘制函数和匹配功能绘制函数
video    用于视频分析的常用功能。    包含读取和写视频流函数、运动估计,背景分离,对象跟踪等视频处理相关内容。
calib3d    三维重建,立体视觉和相机标定等的相关功能,校准单个/多个/多目摄像头。    多视角几何算法;单个立体摄像头标定;物体姿态估计;立体相似性算法;3D信息的重建等等。
features2d    二维特征相关的算法,包含检测、描述或匹配特征点等功能,比如ORB特征。    特征检测和描述;特征检测器(Feature Detectors)通用接口;描述符提取器(Descriptor Extractors)通用接口;描述符匹配器(Descriptor Matchers)通用接口; 通用描述符(Generic Descriptor)匹配器通用接口;关键点绘制函数和匹配功能绘制函数
objdetect    目标检测模块,用来检测人脸、行人或者其他物体    包含Cascade Classification(级联分类)和Latent SVM这两个部分,如经典的基于Haar、LBP特征的人脸检测,基于HOG的行人、汽车等目标检测。
ml    机器学习算法模块,包含一些视觉中最常用的传统机器学习算法,且能够和OpenCV友好交互。    统计模型 (Statistical Models);一般贝叶斯分类器 (Normal Bayes Classifier);K-近邻 (K-NearestNeighbors);支持向量机 (Support Vector Machines);决策树 (Decision Trees);提升(Boosting);梯度提高树(Gradient Boosted Tree;随机树 (Random Trees); 超随机树 (Extremely randomized trees);期望最大化 (Expectation Maximization);神经网络 (Neural Networks); MLData
flann    最近邻算法库,用于在多维空间进行聚类和检索,经常和关键点匹配搭配使用,平时很少直接使用,但在其他模块函数中,会调用到该算法。    高维的近似近邻快速搜索算法库,包含两个部分:快速近似最近邻搜索和聚类
gpu    包含了一些gpu加速的接口,底层的加速是CUDA实现,前提是需要好的计算资源。    ————————————
photo    计算摄像学(Computational Photography)相关的接口,比较新的模块。    包括图像修复和降噪。
stitching    图像拼接模块,也是一个新的模块,不断更新中。    拼接流水线;特点寻找和匹配图像;估计旋转;自动校准;图片歪斜;接缝估测;曝光补偿;图片混合
nonfree    受到专利保护的一些算法。    包含特征检测和GPU相关的内容。最好不要商用,可能会被告!!
contrib    一些实验性质的算法,新的算法,暂未加入OoenCV库中。    包含了一些最近添加的不太稳定的可选功能。2.4.8里的这个模块有新型人脸识别,立体匹配,人工视网膜模型等技术,opencv3.4版本已将此模块去掉。
legacy    一些被取消的接口,保留是考虑到向下兼容,OpenCV3.0已取消    运动分析;期望最大化;直方图;平面细分(C API);特征检测和描述(Feature Detection and Description);描述符提取器(Descriptor Extractors)的通用接口;通用描述符(Generic Descriptor Matchers)的常用接口;匹配器
ocl    利用OpenCL并行加速的一些接口,OpenCV3.0已取消,T-API取代。    ————————————
superres    超分辨率模块,用的不多。    ————————————
viz    基础的3D渲染模块,底层就是著名的3D工具包VTK(Visualization Toolkit)。    ————————————
  build文件夹存放的是通过源码包编译好的文件。它也是以下部署OpenCV用到的主要文件夹,其中:
   –>doc子文件夹:有两个最重要的学习OpenCV的文档(可能没有哦,但不影响),即:
     -->opencv2refman.pdf (函数手册,介绍了所有函数的声明及参数解释);
     -->opencv_tutorials.pdf(函数使用实例);

   –>include子文件夹:存放的是OpenCV的头文件;
   –>x64和x86子文件夹:存放的是针对64位和32位Windows系统编译好的.dll和.lib文件;
   –>python子文件夹:存放的是OpenCV Python API的动态模块;
   –>java子文件夹:存放的是Java API的JAR包。

  了解了整个开发包的构成后,就可以开始进行学习实操,要注意的是OpenCV不断迭代更新,算子一直在更新,我们先把基本的,也是比较重要的算子学通、学透,其他算子学习起来也不是很困难的。

2.2 OpenCV2.x & OpenCV3.x区别

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

三、 总结
  最后,长话短说,大家看完就好好动手实践一下,切记不能三分钟热度、三天打鱼,两天晒网。OpenCV是学习图像处理理论知识比较好的一个途径,大家也可以自己尝试写写博客,来记录大家平时学习的进度,可以和网上众多学者一起交流、探讨,有什么问题希望大家可以积极评论交流,我也会及时更新,来督促自己学习进度。希望大家觉得不错的可以点赞、关注、收藏。
————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
                        
原文链接:https://blog.csdn.net/qq_41225961/article/details/127663424

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值