什么是OpenCV
OpenCV是一个开源的计算机视觉库,1999年,Gary Bradski当时在英特尔任职,怀着通过为计算机视觉和人工智能的从业者提供稳定的基础架构并以此来推动产业发展的美好愿景,他启动了OpenCV项目。OpenCV的一个目标是提供易于使用的计算机视觉接口,从而帮助人们快速建立精巧的视觉应用。因为计算机视觉和机器学习经常在一起使用,所有OpenCV也包含了一个完备的、具有通用性的机器学习库(ML模块)。
应用领域
自从测试版本在1999年1月发布以来,OpenCV已经广泛应用于许多应用、产品以及科研工作中。这些应用包括在卫星和网络地图上拼接图像,图像扫描仪校准,医学图像的降噪,目标分析,安保以及工业检测系统,自动驾驶和安全系统,制造感知系统,相机校正,军事应用,无人中、地面、水下航行器。
什么是计算机视觉
计算机视觉这种技术可以将静止图片或视频数据转换为一种决策或新的表示。所有这样的转换都是为了完成某些特定目的而进行的。输入数据可能包含一些场景信息,例如“相机是搭载在一辆车上的”或者“雷达发现了一米之外有一个目标”。一个新的表示,意思是将彩色图像转换为黑色图像,或者从一个图像序列中消除相机运动所产生的影响。
##OpenCV的起源
OpenCV起源于因特尔想要增强CPU集群性能的研究。该项目的结果是英特尔启动了许多项目,包括实时光线追踪算法以及三维墙体的显示。其中一位研究员Gary
Bradski,在访问大学的时候注意到很多的顶尖大学研究机构,比如MIT的媒体实验室,拥有非常完备的内部公开的计算机视觉开发接口——代码从一个学生传到另一个学生手中,并且会给每个新来的学生一个有价值的由他们自己开发的视觉应用方案。相较于从头开始设计并完成基本功能,新来的学生可以在之前的基础上进行很多新的工作。所以,OpenCV怀着为计算机视觉提供通用性接口这一思想开始了策划。在英特尔性能实验室团队的帮助下,OpenCV最初的核心代码和算法规范是英特尔俄罗斯实验室团队完成的,这就是OpenCV的起源,从英特尔软件性能组的实验室研究开始,俄罗斯的专家负责实现和优化。
##OpenCV的结构
OpenCV是由层级结构组织的。处于最上层的是OpenCV和操作系统的交互。接下来是语言绑定和实例应用程序。再下一层是opencv_contrib模块所包含的OpenCV由其他开发人员所贡献的代码,其包含大多数高层级的函数功能。这就是OpenCV的核心。低层是基于硬件加速层(HAL)的各种硬件优化。