Python语言OpenCV开发之人脸检测和识别

前言

使计算机视觉成为极具吸引力学科的原因之一就是:它正在逐步的变成现实,人脸检测就是例证。在现实生活中人脸检测可用于各行各业,而OpenCV提供了人脸检测的算法。
本节会讲述OpenCV中人脸检测函数以及如何识别人脸。

正文

1、 Haar级联
人脸检测技术主要涉及到Haar特征、积分图和Haar级联三大类。Haar特征分为四类:边缘特征、线性特征、中心特征和对角线特征,将这些特征组合成特征模板。计算Haar的特征值需要计算图像中封闭矩形区域的像素值之和,在不断改变模版大小和位置的情况下,需要计算大量的多重尺度区域,这可能会遍历每个矩形的每个像素值且同一个像素如果被包含在不同的矩形中会被重复遍历多次,这就导致了大量的计算和高复杂度,因此提出积分图的概念。Harr级联是一个基于Haar特征的级联分类器,级联分类器是什么?它是一个把弱分类器串联成强分类器的过程。弱分类器和强分类器分别是什么?弱分类器是性能受限的分类器,它们没法正确地区分所有事物。如果你的问题很简单 弱分类结果可接受。强分类器可以正确的对数据进行分类。
建立一个实时系统需要保证分类器运行良好并且足够简单。唯一需要考虑到的是简单分类器不够精确,若试图更精确就会变成计算密集型且运行速度慢。精确度和速度的取舍在机器学习中相当常见。所以串联一群弱分类器形成一个统一的强分类器可以解决这个问题。弱分类器不需要太精确,串联起来形成的强分类器具有高精确度。
1.1 获取Haar级联数据
去OpenCV官网下载OpenCV源码,解压出来会有一个data/haarcascades的目录,这个文件夹下包含了所有OpenCV的人脸检测的XML文件。这些文件可用于检测静态图片、视频和摄像头所得到的图像中的人脸。如下图所示:
enter image description here
这些文件在下面的程序当中会用到。这些人脸级联数据·文件需要的事正面的人脸图像。
2、 人脸检测
在静态图像或视频中检测人脸的操作是非常相似的,视频人脸检测只是从摄像头读取每帧图像,然后 静态图像中的人脸检测方法进行检测。当然,视频人脸检测还涉及其他的概念,例如跟踪,而静态图像中的人脸加成呢就没有这样的概念,但他们的基本理论是一致的。
2.1 在静态图像中检测人脸
首先是加载图像,其次是检测人脸,检测到人脸后在人脸周围绘制矩形框。实例如下:

import cv2  
filename = 'test.jpg'

def detect(filename):
    face_cascade = cv2.CascadeClassifier('haarcascades/haarcascade_frontalface_default.xml')# 声明face_cascade为CascadeClassifier对象,它负责人脸检测。

    img = cv2.imread(filename)# 加载图像
    gray
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值