OpenCV 是一个开源的计算机视觉库,可以从 http://opencv.org 获取。
1999 年,Gary Bradski(加里·布拉德斯基)当时在英特尔任职,怀着通过为计算机视觉和人工智能的从业者提供稳定的基础架构并以此来推动产业发展的美好愿景,他启动了 OpenCV 项目。
OpenCV 库用C语言和 C++ 语言编写,可以在 Windows、Linux、Mac OS X 等系统运行。同时也在积极开发 Python、Java、Matlab 以及其他一些语言的接口,将库导入安卓和 iOS 中为移动设备开发应用。
OpenCV 自项目成立以来获得了来自英特尔和谷歌的大力支持,尤其需要感谢 Itseez,该公司完成了早期开发的大部分工作。此后,Arraiy 团队加入该项目并负责维护始终开源和免费的 OpenCV.org。
Itseez 是俄罗斯的一家视觉公司,专门从事计算机视觉算法。2016 年 5 月,英特尔收购该公司,以“帮助英特尔的用户打造创新型深度学习的 CV 应用,如果自动驾驶、数字安全监控和工业检测”(英特尔物联网总经理 Doug Dacies 如此说)。
OpenCV 设计用于进行高效的计算,十分强调实时应用的开发。它由 C++ 语言编写并进行了深度优化,从而可以享受多线程处理的优势。
OpenCV 的一个目标是提供易于使用的计算机视觉接口,从而帮助人们快速建立精巧的视觉应用。
OpenCV 库包含从计算机视觉各个领域衍生出来的 500 多个函数,包括工业产***量检验、医学图像处理、安保领域、交互操作、相机校正、双目视觉以及机器人学。
因为计算机视觉和机器学习经常在一起使用,所以 OpenCV 也包含一个完备的、具有通用性的机器学习库(ML模块)。这个子库聚焦于统计模式识别以及聚类。ML 模块对 OpenCV 的核心任务(计算机视觉)相当有用,但是这个库也足够通用,可以用于任意机器学习问题。
IPPICV 加速
如果希望得到更多在英特尔架构上的自动优化,可以***英特尔的集成性能基元(IPP)库,该库包含了许多算法领域的底层优化程序。在库安装完毕的情况下 OpenCV 在运行的时候会自动调用合适的 IPP 库。
从 OpenCV 3.0 开始,英特尔许可 OpenCV 研发团队和 OpenCV 社区拥有一个免费的 IPP 库的子库(称 IPPICV),该子库默认集成在 OpenCV 中并在运算时发挥效用。
如果你使用的是英特尔的处理器,那么 OpenCV 会自动调用 IPPICV。
IPPICV 可以在编译阶段链接到 OpenCV,这样一来,会替代相应的低级优化的C语言代码(在 cmake 中设置WITH_IPP=ON/OFF
来开启或者关闭这一功能,默认情况为开启)。使用 IPP 获得的速度提升非常可观。
图:当 OpenCV 在 Intel Haswell 处理器上使用 IPPICV 时的加速效果