计算机视觉Opencv3实验笔记(5)——人脸检测

一、人脸识别原理

注:更多资源及软件请W信关注“学娱汇聚门

1.1 特征数据介绍:     

      在Python的Opencv中进行人脸识别,那是需要有特征数据的。在github上可以进行下载:https://github.com/opencv/opencv/tree/master/data。包括HAAR与LBP两类数据,都是XML数据类型:

计算机视觉Opencv3实验笔记(5)——人脸检测_第1张图片

例如我们打开haarcascades,下载人脸特征文件(下图还包括了很多其它的特征文件):

计算机视觉Opencv3实验笔记(5)——人脸检测_第2张图片

1.2 人脸检测代码分析:   

import cv2 as cv
import numpy as np


def face_detect_demo(image,face_detector):   #注:人脸检测必须在灰度图片进行处理,此处传入可为彩色图片
    gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)   #转换为灰度图片
    #face_detector = cv.CascadeClassifier("C:\\0-MyWork\\opencv-python\\haarcascade_frontalface_alt_tree.xml")
    faces = face_detector.detectMultiScale(gray, 1.1, 2)  #表示在前后两次相继的扫描中,搜索窗口的比例系数。默认为1.1即每次搜索窗口依次扩大10%; 2:此值越大,对于目标清晰度要求越高,越少时可能会识别错误物体为人脸
    for x, y, w, h in faces:
        cv.rectangle(image, (x, y), (x+w, y+h), (0, 0, 255), 2)  #在图片上画矩阵框架,(x, y)为矩阵起点,(x+w, y+h)为终点, (0, 0, 255)为框的颜色,2为宽度(当为负数时,矩阵框范围全部填充)
    cv.imshow("result", image)

print("--------- Python OpenCV Tutorial ---------")
#src = cv.imread("D:/vcprojects/images/topstar.png")
capture = cv.VideoCapture(0)
#cv.namedWindow("input image", cv.WINDOW_AUTOSIZE)
cv.namedWindow("result", cv.WINDOW_AUTOSIZE)
face_detector = cv.CascadeClassifier("C:\\0-MyWork\\opencv-python\\haarcascade_frontalface_alt.xml")
while(True):
    ret, frame = capture.read()
    frame = cv.flip(frame, 1)  #水平转置
    face_detect_demo(frame,face_detector)
    c = cv.waitKey(10)
    if c == 27: # ESC
        break


#cv.imshow("input image", src)
cv.waitKey(0)
cv.destroyAllWindows()

本程序调用摄像头进行人脸检测,检测到时,标注人脸框,如下图所示:

计算机视觉Opencv3实验笔记(5)——人脸检测_第3张图片

说明:本无法博文及后续本专栏文章代码与测试文件下载地址为:

链接:https://pan.baidu.com/s/1BeZkXoCAn_AFRkyXcI8dMQ 
提取码:aze2 

你可能感兴趣的:(人工智能,人脸识别,opencv,python,计算机视觉,图像识别)