计算机视觉Opencv3实验笔记(5)——人脸检测
一、人脸识别原理
1.1 特征数据介绍:
在Python的Opencv中进行人脸识别,那是需要有特征数据的。在github上可以进行下载:。包括HAAR与LBP两类数据,都是XML数据类型:
例如我们打开haarcascades,下载人脸特征文件(下图还包括了很多其它的特征文件):
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()
本程序调用摄像头进行人脸检测,检测到时,标注人脸框,如下图所示:
说明:本无法博文及后续本专栏文章代码与测试文件下载地址为:
链接:https://pan.baidu.com/s/1BeZkXoCAn_AFRkyXcI8dMQ 提取码:aze2
下一篇:
Vue+PHP实现个人博客系统