人脸识别之人脸检测(一)
人脸识别之拍照保存(二)
人脸识别之数据训练(三)
人脸识别之成果检验(四)
建立人脸识别,首先要下载opencv,在pycharm中的opencv,只能满足一部分需要,不能达到识别。
1.下载opencv。官网上的太慢。所以用百度网盘(只有windows版本的)
https://pan.baidu.com/s/1vI5SQsd_c-RHRV3W7N0Ibw?pwd=v6e1
提取码:v6e1
解压后点击文件,按提示直接安装即可。
2.单个人脸识别(解释在代码中)
import cv2 as cv
def face_detect():
gary = cv.cvtColor(img,cv.COLOR_BGR2GRAY) # 灰度转换
# 人脸识别要导入的opencv的文件,切记windows中的文件路径用/,或者\\
face_detect = cv.CascadeClassifier('D:/OPENCV(WIN)/opencv/sources/data/haarcascades/haarcascade_frontalface_alt2.xml')
# 括号中每个参数的作用(图像,每次遍历后缩放的倍数,识别次数, ,人脸最小,和人脸最大)
face = face_detect.detectMultiScale(gary,1.01,5,0,(100,100),(300,300))
for x,y,w,h in face: # 绘制识别人脸区域的大小。
cv.rectangle(img,(x,y),(x+w,y+h),color=(0,0,255),thickness=2)
cv.imshow('result',img) # 显示图片
# 读取图像
img = cv.imread('face1.jpg')
# 检测函数
face_detect()
# 当识别到键盘输入英文的q字母时退出
while True:
if ord('q') == cv.waitKey(0):
break
# 释放内存
cv.destroyAllWindows()
2.多个人脸识别(将opencv中的识别的文件路径修改)
import cv2 as cv
def face_detect():
gary = cv.cvtColor(img,cv.COLOR_BGR2GRAY) # 灰度转换
# 人脸识别要导入的opencv的文件,切记windows中的文件路径用/,或者\\
face_detect = cv.CascadeClassifier('D:/opencv/opencv/sources/data/haarcascades/haarcascade_frontalface_default.xml')
# 括号中每个参数的作用(图像,每次遍历后缩放的倍数,识别次数, ,人脸最小,和人脸最大)
face = face_detect.detectMultiScale(gary,1.01,5,0,(100,100),(300,300))
for x,y,w,h in face: # 绘制识别人脸区域的大小。
cv.rectangle(img,(x,y),(x+w,y+h),color=(0,0,255),thickness=2)
cv.imshow('result',img) # 显示图片
# 读取图像
img = cv.imread('face1.jpg')
# 检测函数
face_detect()
# 当识别到键盘输入英文的q字母时退出
while True:
if ord('q') == cv.waitKey(0):
break
# 释放内存
cv.destroyAllWindows()
3.视频检测人脸
import cv2 as cv
def face_detect_demo(img):
gary = cv.cvtColor(img,cv.COLOR_BGR2GRAY)
face_detect = cv.CascadeClassifier('D:/opencv(WIN)/opencv/sources/data/haarcascades/haarcascade_frontalface_default.xml')
face = face_detect.detectMultiScale(gary)
for x,y,w,h in face:
cv.rectangle(img,(x,y),(x+w,y+h),color=(0,0,255),thickness=2)
cv.imshow('result',img)
# 视频路径
path = 'D:\\Pycharm\\other\\TEST\\mycodetest\\opencv\\1.mp4'
cap = cv.VideoCapture(path)
# 循环
while True:
flag,frame = cap.read()
if not flag:
break
face_detect_demo(frame)
if ord('q') == cv.waitKey(1):
break
# 释放内存
cv.destroyAllWindows()
# 释放摄像头
cap.release()