我们团队的最重要的一部分是人脸的识别,通过摄像头检测人的各项信息。我们采用的技术是OpenCV。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。
Mat 是OpenCV中最主要的一个类,由两个数据部分组成:矩阵头(包含矩阵尺寸,存储方法,存储地址等信息)和一个指向存储所有像素值的矩阵(根据所选存储方法的不同矩阵可以是不同的维数)的指针。通过Mat的构造函数可以创建一个Mat对象,如
Mat M(2,2,CV_8UC3,Scalar(0,0,255));
还有几个可以遍历Mat的函数
M.row; // 返回图像行数
M.nCols; // 返回图像列数
M.channels(); //返回通道数
M.isContinuous(); // 返回bool类型表示是否连续存储
调用函数 randu() 来对一个矩阵使用随机数填充,需要指定随机数的上界和下界:
Mat R = Mat(3, 2, CV_8UC3);
randu(R, Scalar::all(0), Scalar::all(255));
OpenCV支持使用运算符<<来打印其它常用OpenCV数据结构。如
Point2f P(5, 1); cout << "Point (2D) = " << P << endl << endl;
Point3f P3f(2, 6, 7);cout << "Point (3D) = " << P3f << endl << endl;
OpenCV为图像的处理提供了一系列的标准的接口,简化计算机视觉程序和解决方案的开发。