第1章 处理图像文件和视频文件
本章概述OpenCV及其安装以及第一个基本程序,将介绍如下一些内容:为初学者简略介绍OpenCV,接着给出一个简单易学的库的安装步骤指南。在完成用户本地硬盘上的安装之后,快速了解一下OpenCV的结构。快速掌握使用具有某些通用编程框架的库来创建项目的方法。如何使用函数读、写图像和视频。最后,介绍如何通过库函数为软件项目添加丰富的用户界面,包括鼠标交互、基本绘图形以及Qt支持。
1.1 OpenCV介绍
OpenCV(Open Source Computer Vision,开源计算机视觉类库)最初由Intel开发,是一个进行实时图像处理的免费跨平台库,对于一切与计算机视觉有关的事务处理,OpenCV已经成为一个实际上的标准库工具。OpenCV的第一版于2000年正式发布,获得了BSD许可。从那时起,在该科学研究领域,OpenCV的功能已经非常丰富。2012年,非盈利组织OpenCV.org开始负责为开发者和用户维护一个支持网站。
在编写本书时,一个新的OpenCV(3.0版本)主要版本已经可用,但仍在测试状态。本书将介绍这个新版本带来的最新相关变化。
OpenCV对大部分流行的操作系统可用,例如:GNU/Linux、OS X、Windows、Android、iOS等。第一次实现时使用的是C程序设计语言;但从2.0版本开始,由于使用C++实现使得OpenCV更加流行。新的函数都是采用C++语言编写的。然而,如今的库对于其他编程语言(例如:Java、Python和MATLAB/Octave)提供了一个完整的接口。而且,已经开发出了对其他语言(例如:C#、Ruby和Perl)的封装包,以鼓励程序员采用。
为了使计算密集型视觉任务的性能最大化,OpenCV包括以下支持:
用一个线程构建模块(Threading Building Block,TBB)来支持多核计算机上的多线程——由Intel开发的一个模板库。
用Intel处理器上的一个集成性能函数库(Integrated Performance Primitive,IPP)子集来提升性能。感谢Intel使这些函数在3.0测试版本上免费可用。
使用计算统一设备架构(Compute Unif?ied Device Architecture,CUDA)和开放计算语言(Open Computing Language,OpenCL)提供图形处理器(Graphic Processing Unit,GPU)上的处理接口。
OpenCV的应用包括分割与识别、二维和三维特征工具包、对象识别、人脸识别、运动跟踪、手势识别、图像拼接、高动态范围(high dynamic range,HDR)成像、增强现实等领域。另外,为了支持上面某些应用领域,它还包含了一个具有统计机器学习功能的模块。