虽然之前一直再用Opencv这个开源库完成一些课程的课后作业和课程实习,但是一直对这个没有一个总体认识,只清楚它是一个开源的计算机视觉库,对于里面的一些用法自己也不是很清楚,所以找来了一本浅墨写的Opencv3编程入门电子版在读,觉得对自己以后可能会有点帮助,开一篇博客来记录一些书中的内容。
可能会有朋友需要这本书,我在这里分享出去
链接:https://pan.baidu.com/s/1NCUNKzCKwVp9EYzxD8BHaA 密码:yhwi
下面开始记录(会记录一些自己认为的要点,可能会有些遗漏)
Opencv分很多模块,不同模块具有不同的功能和作用,接下来具体介绍
(1)calib3d--calibration(校准)和3D这两个词的组合缩写。这个模块主要是相机校准和三维重建相关的内容,包括基本的多视角几何算法、单个立体摄像头标定、物体姿态估计、立体相似性算法、3D信息的重建等。
(2)contrib--Contributed/Experimental Stuf的缩写。该模块包含了一些最近添加的不太稳定的可选功能,不用去多管。新增了新型的人脸识别,立体匹配,人工视网膜模型等技术。这个在我下载的opencv3.4.1里面没有找到,需要自己在github上面下载相对应的opencv_contrib版本,使用CMAKE编译生成工程文件,再去重新配置Opencv。
(3)core--核心功能模块,包含:Opencv基本数据结构,动态数据结构,绘图函数,数组操作相关函数,辅助功能与系统函数和宏,与OpenGL的互操作。
(4)imageproc--Image和process这两个单词的缩写组合,图像处理模块,包含:线性和非线性的图像滤波,图像的几何变换,其他图像转换,直方图相关,结构分析和形状描述,运动分析和对象跟踪,特征检测,目标检测等内容。
(5)feature2d--也就是features2D,即2D功能的框架,包含:特征检测和描述,特征检测器通用接口,描述符提取器通用接口,描述符匹配器通用接口,通用描述符匹配器通用接口,关键点绘制函数和匹配功能绘制函数。
(6)flann--Fast Library for Approximate Nearest Neighbors,高维的近似近邻快速搜索算法库,包含:快速近似最近邻搜索,聚类,
(7)gpu--运行GPU加速的计算机视觉模块。
(8)highgui--高层的GUI图形用户界面,包含媒体的输入输出,视频捕捉,图像和视频的编码解码,图形交互界面的接口等内容。
(9)legacy--一些已经废弃的代码库,保留下来向下兼容,包含运动分析、期望最大化、直方图、平面细分(C API),特征检测和描述,描述符提取器,通用描述符的常用接口,匹配器。
(10)ml--Machine Learning,机器学习模块,基本上是统计模型和分类算法,包含:统计模型,一般的贝叶斯分类器,K-近邻,支持向量机,决策树,提升,梯度提高树,随机树,超随机树,期望最大化,神经网络,MLData。
(11)nonfree--一些具有专利的算法模块,包含特征检测和GPU相关的内容,最好不要商用。
(12)objdetect--目标检测模块,包含Cascadee Classification(级联分类)和Latent SVM这两个部分。
(13)ocl--OpenCL-accelerated Computer Vision,运用OpenCL加速的计算机视觉组件模块。
(14)photo--Computer Photography,包含图像修复和图像去噪两部分。
(15)stitching--image stitching,图像拼接模块,包含:拼接流水线,特点寻找和匹配图像,估计旋转,自动校准,图片歪斜,接缝估测,曝光补偿,图片混合。
(16)superres--superResolution,超分辨率技术的相关功能模块。
(17)ts--OpenCV测试相关代码,不用去管。
(18)video--视频分析组件,该模块包括运动估计,背景分离,对象跟踪等视频处理相关内容。
(19)Videostab--Video stabilization,视频稳定相关的组件,官方文档也没有多余介绍,不用管。
在opencv头文件的opencv.hpp中已经包含了各模块的头文件,编写其他模块的应用程序时,原则上只写一句#include
代码的命名规则(直接贴图了):