人脸识别
本文主要讲如何利用opencv库进行人脸识别
1.Opencv简介
OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows、Android和Mac OS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。                 
——来自百度词条
2.python 安装Opencv库
pip install cv21
1
pip install cv23.开始前的准备:
    3.1 准备一张图片 网上随便下载一张

    3.2 人脸模型数据 
            安装完cv2后,可直接在本地磁盘中找到 例如:D:\Anaconda\Lib\site-packages\cv2\data\haarcascade_frontalface_alt.xml
4.开始
"""捕捉图片"""
#导入库
import cv2
#加载图片
img = cv2.imread('timg.jpg')
#加载人脸模型
face=cv2.CascadeClassifier('haarcascade_frontalface_alt.xml')
#调整灰度
gray=cv2.cvtColor(img,cv2.COLOR_RGB2GRAY)
#识别人脸
faces=face.detectMultiScale(gray)
#命名窗口
cv2.namedWindow("test")
#显示图片
for (x,y,w,h) in faces:
    cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)
cv2.imshow('test2',img)
#暂停运行 0代表一直暂停
cv2.waitKey(0)
#关闭所有窗口
cv2.destroyAllWindows()21
1
"""捕捉图片"""2
#导入库3
import cv24
#加载图片5
img = cv2.imread('timg.jpg')6
#加载人脸模型7
face=cv2.CascadeClassifier('haarcascade_frontalface_alt.xml')8
#调整灰度9
gray=cv2.cvtColor(img,cv2.COLOR_RGB2GRAY)10
#识别人脸11
faces=face.detectMultiScale(gray)12
#命名窗口13
cv2.namedWindow("test")14
#显示图片15
for (x,y,w,h) in faces:16
    cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)17
cv2.imshow('test2',img)18
#暂停运行 0代表一直暂停19
cv2.waitKey(0)20
#关闭所有窗口21
cv2.destroyAllWindows()调整灰度是为了减少计算量
核心代码:faces=face.detectMultiScale(gray)
参数为:需要识别的图片
返回值为:人脸识别结果的矩形框(x,y,w,h)
5.运行结果

6.调用摄像头进行人脸识别
"""捕捉视频"""
import cv2
captrue = cv2.VideoCapture(0)
face=cv2.CascadeClassifier('haarcascade_frontalface_alt.xml')
cv2.namedWindow('人脸识别')
while True:
    ref,frame=captrue.read()
    gray=cv2.cvtColor(frame,cv2.COLOR_RGB2GRAY)
    faces=face.detectMultiScale(gray)
    for (x,y,w,h) in faces:
        cv2.rectangle(frame,(x,y),(x+w,y+h),(255,0,0),2)
    cv2.imshow('人脸',frame)
    if cv2.waitKey(5) & 0xFF==ord('q'):
        break
captrue.release()
cv2.destroyAllWindows()16
1
"""捕捉视频"""2
import cv23
captrue = cv2.VideoCapture(0)4
face=cv2.CascadeClassifier('haarcascade_frontalface_alt.xml')5
cv2.namedWindow('人脸识别')6
while True:7
    ref,frame=captrue.read()8
    gray=cv2.cvtColor(frame,cv2.COLOR_RGB2GRAY)9
    faces=face.detectMultiScale(gray)10
    for (x,y,w,h) in faces:11
        cv2.rectangle(frame,(x,y),(x+w,y+h),(255,0,0),2)12
    cv2.imshow('人脸',frame)13
    if cv2.waitKey(5) & 0xFF==ord('q'):14
        break15
captrue.release()16
cv2.destroyAllWindows()        调用摄像头识别的原理和识别图片是一样的,只是通过读取每一帧图片,识别结果后在展示出来罢了。
7.总结
以上是人脸识别的小例子,内容其实很少。
核心流程为:
载入模型 → 载入图片 → 识别图片 → 展示图片
 
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号