基于opencv的人脸检测学习(一)

一、人脸检测分类

人脸检测是指检测并定位到指定图像中的人脸,并且返回高精度的人脸框坐标。
目前的人脸检测方法大致可分为两类:基于知识和基于统计
基于知识的方法
将人脸看作器官特征的组合,根据面部器官的特征和几何位置关系来检测人脸。例如模板匹配、人脸特征、形状与边缘、纹理特征、颜色特征等方法。
基于统计的方法
将人脸看作二维像素的矩阵,通过大量的人脸图像样本来构造人脸模式空间,根据相似度来判断人脸是否存在。例如神经网络、支持向量机、主成分分析、隐马尔可夫模型、Adaboost算法等。

二、OpenCV简介

OpenCV是一个开源的跨平台视觉库,在Linux、Windows、Android和Mas OS 等多个操作系统上都能运行,可实现计算机视觉和图像处理等功能。它本身使用C++语言编写,主要接口也是C++,但它也同时提供了python、Ruby、MATLAB等语言的接口.

三、OpenCV人脸检测

opencv在人脸检测上使用的是Haar特征的级联表,Haar分类器算法要点如下:
(1)使用Haar-like特征做检测
(2)使用积分图对Haar-like特征求值进行加速
(3)使用Adaboost算法训练区分人脸和非人脸的强分类器
(4)使用筛选式级联把强分类器级联到一起,提高准确率

人脸的Haar特征分类器是一个XML文件,该文件中会描述人脸的Haar特征值,也可以单独描述眼睛、嘴唇或是其他物体

检测步骤

(1)读入图片
(2)将彩色图片灰度
(3)进行灰度图直方图均衡化操作
(4)检测人脸

四、安装opencv-python

直接在终端输入pip3 install opencv-python

五、cv2库

1、cv2.imread(filepath,flags) //读入一张图片
2、cv2.imshow(wname,img)
//显示图像,但只写这一句图像只会一闪而过,wname指显示图像的窗口的名字,img指要显示的图像
3、imwrite(file ,img,num)
//保存一个图像,参数一是保存图像的新文件名,参数二是要保存的图像,参数三是压缩级别,默认为3.
4、cv2.cvtColor() //图像颜色空间转换
cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) //将图片进行灰度化
5、cv2.resize(image,image2,dsize) //更改图像的尺寸
6、cv2.flip(img,flipcode) //图像反转
flipcode = 0:沿着x轴翻转;flipcode > 0:沿着y轴翻转;flipcode < o:x,y同时翻转
7.cv2.warpAffine(img,M,(,)) //图像仿射变换
8、cv2.putText(img,‘text’,(,)) //图像添加文字。要添加的图像,添加的文字,左上角坐标,字体大小,颜色,字体粗细
9.cv2.rectangle(img,(x,y),(x+w,y+h),(0,255,0),2) //画矩形。选定的图像,矩形的左上角坐标,矩形的右下角坐标

简单实例

1、在pycharm中读入一张图片
基于opencv的人脸检测学习(一)
2、将图片进行灰度基于opencv的人脸检测学习(一)
3、在所选定的图像上绘制图形基于opencv的人脸检测学习(一)
4.更改图像的尺寸基于opencv的人脸检测学习(一)