前言
本文是利用训练好的模型 快速运行人脸识别与人脸关键点识别
分为两部分:利用mctnn的tensorflow模型,和利用opencv自带的级联分类器进行人脸检测
目录
cascade opencv 识别
模型下载:https://github.com/opencv/opencv/tree/master/data/haarcascades
或者在安装完python-opencv的盘里搜这几个文件
classifier_face = cv2.CascadeClassifier("haarcascade_frontalface_alt.xml")
classifier_eye = cv2.CascadeClassifier("haarcascade_eye.xml")
classifier_mouth=cv2.CascadeClassifier("haarcascade_mcs_mouth.xml")
# !/usr/bin/env python
# coding=utf-8
import os
import numpy
from PIL import Image, ImageDraw
import cv2
#created by chenfenyu 2018.3.20
playCapture = cv2.VideoCapture(0)
#获取外接摄像头
#eye = cv2.imread("eye.png")
#mouth = cv2.imread("mouth.png")
size = (int(playCapture.get(cv2.CAP_PROP_FRAME_WIDTH) + 0.5), int(playCapture.get(cv2.CAP_PROP_FRAME_HEIGHT) + 0.5))
#获取摄像头返回的宽和高
#fourcc = cv2.VideoWriter_fourcc(*'mp4v')
#video = cv2.VideoWriter("/Users/funny/Downloads/a.avi", fourcc, 5, size)
classifier_face = cv2.CascadeClassifier("haarcascade_frontalface_alt.xml")
classifier_eye = cv2.CascadeClassifier("haarcascade_eye.xml")
classifier_mouth=cv2.CascadeClassifier("haarcascade_mcs_mouth.xml")
while playCapture.isOpened():
success, img = playCapture.read()
if success:
'''第一个参数ret的值为True或False,代表有没有读到图片
第二个参数是frame,是当前截取一帧的图片
'''
faceRects_face = classifier_face.detectMultiScale(img, 1.2, 2, cv2.CASCADE_SCALE_IMAGE, (20, 20))
#检测器:detectMultiScale参数(图像,每次缩小图像的比例,匹配成功所需要的周围矩形框的数目,检测的类型,匹配物体的大小范围)
key = cv2.waitKey(1)
#键盘等待
if len(faceRects_face) > 0:
#检测到人脸
for faceRect_face in faceRects_face:
x, y, w, h &#