前言:
😊😊😊欢迎来到本博客😊😊😊
🌟🌟🌟 本专栏主要结合OpenCV和C++来实现一些基本的图像处理算法并详细解释各参数含义,适用于平时学习、工作快速查询等,随时更新。
😊😊😊 具体食用方式:可以点击本专栏【OpenCV快速查找(更新中)】–>搜索你要查询的算子名称或相关知识点,或者通过这篇博客👉通俗易懂OpenCV(C++版)详细教程——OpenCV函数快速查找(不断更新中)]查阅你想知道的知识,即可食用。
🎁🎁🎁支持:如果觉得博主的文章还不错或者您用得到的话,可以悄悄关注一下博主哈,如果三连收藏支持就更好啦!这就是给予我最大的支持!😙😙😙
文章目录
- 学习目标
- 一、 初识OpenCV
- 二、 OpenCV模块介绍
- 三、 总结
学习目标
- 初识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模块介绍
这里以在Windows下OpenCV 2.x版本为例,介绍整个OpenCV开发包的构成。解压缩所下载的OpenCV压缩包主要有两个文件夹,分别为build和sources。
sources是用来存放源码的,在其子文件夹modules下列出了OpenCV实现的各个模块。
其中core、highgui和imgproc是最基础的模块,也是学习OpenCV的起点。
本专栏主要以这三个模块为基础,重点介绍图像处理基础方法的数学原理。对于其他更高层次的方向及应用也会有相关介绍。
具体模块如下:
模块名 | 注释 |
---|---|
core | 是OpenCV的核心模块,包含了最基本的结构(矩阵,点线和形状等),以及相关的基础运算/操作。 |
imgproc | 图像处理模块,包括图像相关的基础功能(滤波,梯度,改变大小等)和一些高级功能,即图像分割,直方图,形态分析和边缘/直线提取等。 |
highgui | 提供了用户界面和文件读取的基本函数,比如图像显示窗口的生成和控制,图像/视频文件的IO等,,可认为是一个轻量级的Windows UI 工具。 |
video | 用于视频分析的常用功能,包含读取和写视频流函数。 |
calib3d | 三维重建,立体视觉和相机标定等的相关功能,校准单个/多个/多目摄像头。 |
features2d | 二维特征相关的算法,包含检测、描述或匹配特征点等功能,比如ORB特征。 |
object | 目标检测模块,用来检测人脸、行人或者其他物体,包含级联分类和Latent SVM。 |
objdetect | 目标检测模块,用来检测人脸、行人或者其他物体,包含级联分类和Latent SVM,如经典的基于Haar、LBP特征的人脸检测,基于HOG的行人、汽车等目标检测。 |
ml | 机器学习算法模块,包含一些视觉中最常用的传统机器学习算法,且能够和OpenCV友好交互。 |
flann | 最近邻算法库,用于在多维空间进行聚类和检索,经常和关键点匹配搭配使用,平时很少直接使用,但在其他模块函数中,会调用到该算法。 |
gpu | 包含了一些gpu加速的接口,底层的加速是CUDA实现,前提是需要好的计算资源。 |
photo | 计算摄像学(Computational Photography)相关的接口,比较新的模块,包括图像修复和降噪。 |
stitching | 图像拼接模块,也是一个新的模块,不断更新中。 |
nonfree | 受到专利保护的一些算法。 |
contrib | 一些实验性质的算法,新的算法,暂未加入OoenCV库中。 |
legacy | 一些被取消的接口,保留是考虑到向下兼容,OpenCV3.0已取消 |
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不断迭代更新,算子一直在更新,我们先把基本的,也是比较重要的算子学通、学透,其他算子学习起来也不是很困难的。
三、 总结
最后,长话短说,大家看完就好好动手实践一下,切记不能三分钟热度、三天打鱼,两天晒网。OpenCV是学习图像处理理论知识比较好的一个途径,大家也可以自己尝试写写博客,来记录大家平时学习的进度,可以和网上众多学者一起交流、探讨,有什么问题希望大家可以积极评论交流,我也会及时更新,来督促自己学习进度。希望大家觉得不错的可以点赞、关注、收藏。
🚶🚶🚶今天的文章就到这里啦~
喜欢的话,点赞👍、收藏⭐️、关注💟哦 ~