精通人脸识别01:opencv介绍

精通人脸识别01:opencv介绍


一、OpenCV介绍

OpenCV于1999年由Gary Bradsky在英特尔创立,第一个版本于2000年问世。随后Vadim Pisarevsky加入了Gary Bradsky,主要负责管理英特尔的俄罗斯软件OpenCV团队。2005年,OpenCV被用于Stanley车型,并赢得2005年DARPA大挑战。后来,它在Willow Garage的支持下持续并积极发展,转为由Gary Bradsky和Vadim Pisarevsky领导该项目。OpenCV现在支持与计算机视觉和机器学习相关的众多算法,并且正在日益扩展。

OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,支持各种编程语言,如C ++,Python,Java等,可以在不同的系统平台上使用,包括WindowsLinux,OS X,Android和iOS。基于CUDA和OpenCL的高速GPU操作接口也在积极开发中。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。 OpenCV用C++语言编写,它的主要接口也是C++语言,但是依然保留了大量的C语言接口。

在计算机视觉项目的开发中,OpenCV作为较大众的开源库,拥有了丰富的常用图像处理函数库,采用C/C++语言编写,可以运行在Linux/Windows/Mac等操作系统上,能够快速的实现一些图像处理和识别的任务。此外,OpenCV还提供了Java、python、cuda等的使用接口、机器学习的基础算法调用,从而使得图像处理和图像分析变得更加易于上手,让开发人员更多的精力花在算法的设计上。

 

二、应用领域 
1、人机互动

2、物体识别

3、图像分割

4、人脸识别

5、动作识别

6、运动跟踪

7、机器人

8、运动分析

9、机器视觉

10、结构分析

11、汽车安全驾驶

图像数据的操作 ( 分配、释放、复制、设置和转换)。 图像是视频的输入输出I/O (文件与摄像头的输入、图像和视频文件输出)。 
矩阵和向量的操作以及线性代数的算法程序(矩阵积、解方程、特征值以及奇异值等)。 
各种动态数据结构(列表、队列、集合、树、图等)。 
基本的数字图像处理(滤波、边缘检测、角点检测、采样与差值、色彩转换、形态操作、直方图、图像金字塔等)。 
结构分析(连接部件、轮廓处理、距离变换、各自距计算、模板匹配、Hough变换、多边形逼近、直线拟合、椭圆拟合、Delaunay 三角划分等)。 
摄像头定标(发现与跟踪定标模式、定标、基本矩阵估计、齐次矩阵估计、立体对应)。 
运动分析(光流、运动分割、跟踪)。 
目标识别(特征法、隐马尔可夫模型:HMM)。 
基本的GUI (图像与视频显示、键盘和鼠标事件处理、滚动条)
 

三、OpenCV具有模块化结构,即包含多个共享库或者静态库,模块结构如下:

  • 核心功能(Core functionality) - 一个紧凑的模块,定义了基本的数据结构,包括密集的多维Mat数组和被其他模块使用的基本功能。
  • 图像处理(Image processing) - 一个图像处理模块,它包括线性和非线性图像滤波,几何图形转化(重置大小,放射和透视变形,通用基本表格重置映射),色彩空间转换,直方图等。
  • 影像分析(video) - 一个影像分析模块,它包括动作判断,背景弱化和目标跟踪算法。
  • 3D校准(calib3d) - 基于多视图的几何算法,平面和立体摄像机校准,对象姿势判断,立体匹配算法,和3D元素的重建。
  • 平面特征(features2d) - 突出的特征判断,特征描述和对特征描述的对比。
  • 对象侦查(objdetect) - 目标和预定义类别实例化的侦查(例如:脸、眼睛、杯子、人、汽车等等)。
  • highgui - 一个容易使用的用户功能界面。
  • 视频输入输出(videoio) - 一个容易使用的视频采集和视频解码器。
  • GPU - 来自不同OpenCV模块的GPU加速算法。
  • … 一些其他的辅助模块,比如FLANN和谷歌的测试封装,Python绑定和其他。

四、基于统计学机器学习库

  • Boosting算法
  • Decision Tree(决策树)学习
  • Gradient Boosting算法
  • EM算法(期望最大化)
  • KNN算法
  • 朴素贝叶斯分类
  • 人工神经网络
  • 随机森林
  • 支掌向量机

五、重要更新:

OpenCV 4.0 现在是一个 C++11 库,要求 C++11 兼容的编译器。所需的 CMake 至少是 3.5.1 版本。移除 OpenCV 1.x 中的大量 C API。core 模块中的 Persistence(用于存储和加载 XML、YAML 或 JSON 格式的结构化数据)可以完全使用 C++ 来重新实现,因此这里的 C API 也被移除。添加了新模块 G-API,它可作为基于图的高效图像处理流程。dnn 模块包括实验用 Vulkan 后端,且支持 ONNX 格式的网络。实现了流行的 Kinect Fusion 算法,且为 CPU 和 GPU (OpenCL) 进行优化。objdetect 模块中添加了二维码检测器和解码器。将高效、高质量的 DIS dense optical flow 算法从 opencv_contrib 移到 video 模块。

此外,OpenCV 4.0 支持 Mask-RCNN 模型,性能也有所提升,图像处理操作可实现 15%-30% 的速度提升。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值