OpenCV是分层构建的。顶部是OpenCV运行的操作系统。中间是语言和示例应用程序。再往下是opencv_contrib中的代码,主要包含更高级别的功能。之后是OpenCV的核心,最底层的是各种硬件优化硬件加速层(HAL)。图1是opencv的组织架构。
图1
如果在英特尔处理器上可用,OpenCV将利用英特尔的IPP库, 速度的提高是相当大的。
虽然GaryBradski在英特尔创立了OpenCV,但OpenCV一直致力于促进商业和研究用途;这是它的使命。因此它是开放和免费的,并且代码本身可以被用于或嵌入(全部或部分)在其他应用程序中,无论是商业还是研究。它不会强制您的应用程序代码是开放的或免费的。
下载和安装
OpenCV的下载和安装已经在以前说过了,可以参考前面的文章,这里就不提了。
OpenCV的主要文档是http://opencv.org上提供的HTML文档。
OpenCV2.x提供了完整的参考手册和一系列教程,全部为PDF格式; 检查opencv / doc。从OpenCV3.x开始,没有脱机文档了。
http://opencv.org大量的文档以及wiki上提供的文档,分为以下几个主要部分:
Reference
本节包含功能,参数以及如何使用它们的一些信息。
Tutorials
有大量的教程集合; 这些告诉你如何完成各种事情。也有基本的教程,比如如何在各种平台上安装OpenCV或创建OpenCV项目,以及更多高级主题,如背景扣除物体检测。
QuickStart
这是一个教程子集,只包含帮助您在特定平台上启动和运行的子集。
CheatSheet
这是一个单独的.pdf文件,其中包含几乎是整个库的引用。
Wiki
这个wiki包含了你可能想要的一切。这是您可以找到新闻,公开问题,错误跟踪以及无数更深入的主题,比如如何成为OpenCV的贡献者。
Q&A
这是数以千计的人们所要求和回答的问题的庞大档案。你可以去那里问OpenCV社区的问题,或者通过回答他们的问题来帮助他人。
所有这些都可以通过OpenCV.org主页上的文档访问。OpenCV的模块是库的主要组织结构。库中的每个函数都是一个模块的一部分。以下是目前的模块:
Core
Core包含所有基本对象类型及其基本操作部分。
Imgproc
图像处理模块,包含图像的基本转换,滤波器和类似的卷积运算。
highgui
该模块包含用户界面功能,可用于显示图像或进行简单的用户输入。它可以被认为是一个非常轻量级的窗口UI工具包。
Video
视频库,包含需要读取和写入视频流的功能。
calib3d
该模块包含需要校准单个摄像机以及立体或多像素阵列的算法实现。
features2d
该模块包含用于检测,描述和匹配关键点特征的算法。
Objdetect
该模块包含用于检测特定对象(如面部或行人)的算法。还可以训练探测器以检测其他物体。
Ml
机器学习库,本身是一个完整的库,并且包含大量的机器学习算法,这些算法实现的方式与OpenCV的数据结构一起工作。
Flann
FLANN代表“用于近似最近邻的快速库”。
gpu
GPU库包含大部分其他库函数的实现,这些函数经过优化,可在CUDA GPU上运行。还有一些功能仅用于GPU操作。其中的一些提供了优异的结果,但需要足够的计算资源,以便在非GPU硬件上实施。
Photo
包含对计算摄影有用的工具。
Stitching
整个模块实现了复杂的图像拼接管道。
nonfree
OpenCV包含一些算法的实现,这些算法获得专利或者受到使用限制。
contrib
该模块包含尚未整合到库中的新内容。
legacy
该模块包含尚未从库中完全放弃的旧含函数。
ocl
它实现了开放并行编程的KhronosOpenCL标准。ocl模块旨在提供可在任何GPU或其他具有Khronos功能的并行设备上运行的实现。
OpenCV扩展库
在OpenCV中,库已经分为两部分:opencv和opencv_contrib, 前者由核心OpenCV团队维护,包含稳定代码,而后者不太成熟,主要由社区维护和开发,可能有部分属于非OpenCV许可证,可能包含专利算法。以下是opencv_contrib库中的一些模块
Dnn
深度神经网络
Face
人脸识别
Text
文本检测和识别; 可以选择使用开源OCR Tesseract作为后端
Rgbd
处理使用Kinect和其他深度传感器获得的RGB +深度图(或仅使用立体对应算法进行计算)
Bioinspired
生物启发的视觉
ximgproc,xphoto
先进的图像处理和计算摄影算法
Tracking
对象跟踪算法
可移植性
OpenCV最初是由任何兼容的C ++编译器编写的。这意味着C和C++代码必须是相当标准的,才能使跨平台支持更加容易。OpenCV已被移植到几乎所有的商业系统中,从亚马逊云和40核心英特尔至强融核到树莓派和机器狗。