赞
踩
前面一文我们介绍了电脑打开摄像头,没基础的小伙伴可以点下面链接去看看
本文我将介绍opencv人脸检测,我使用的是LBP特征级联分类器,这个模型是2016年12月21日上传的,使用 OpenCV 的级联分类器 CascadeClassifier加载预训练模型lbpcascade_frontalface_improved.xml,这个模型我放在了迅雷网盘上的地址如下:
链接:https://pan.xunlei.com/s/VN3KgTfLTRfTHox3_bizI4mBA1
提取码:35qw
人脸识别流程:
代码演示:
- import cv2
- import time
- #加载训练模型
- face_detect=cv2.CascadeClassifier(r"./data1/lbpcascade_frontalface_improved.xml")
- cap=cv2.VideoCapture(0)
- while cap.isOpened():
- #读取摄像头画面
- frla,img=cap.read()
- #画面翻转y轴
- img=cv2.flip(img,1)
- #视频图片经过灰色处理后只有黑白两种颜色,像素的位置并不会改变,便于像素识别
- img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
- #进行人脸检测
- faces = face_detect.detectMultiScale(
- img_gray, #进行检测的灰度图片
- scaleFactor=1.02,#将检测图片放大1.02被
- minNeighbors=5)#表示构成检测目标的相邻矩形的最小个数(默认为3个),这里设置了5个。
- #判断是否有人脸
- if len(faces):
- #遍历检测到的人脸
- for x,y,w,h in faces:
- #绘制人脸矩形框
- cv2.rectangle(img, (x, y), (x + w, y + h), (0, 255, 0), 2)
- if cv2.waitKey(30) & 0xff == ord('q'):
- break
- if cv2.waitKey(30)&0xff == ord('s'):#按s键保存图片
- timer=time.time()#获取时间戳
- name=str(int(timer))+".jpg"#将时间戳转换成字符串类型和.jpg拼接,用作下一步的保存图片的名字
- cv2.imwrite(name,img)#保存图片
- print("图片保存成功")
- #显示人脸
- cv2.imshow("face",img)
- #释放摄像头
- cap.release()
- #销毁窗口
- cv2.destroyAllWindows()
detecMultiScale()
opencv中人脸检测使用的是 detectMultiScale函数。它可以检测出图片中所有的人脸,并将人脸用vector保存各个人脸的坐标、大小(用矩形表示)所以我们遍历返回的人脸数据faces就可以使用opencv中的rectangle()方法绘制人脸矩形框,函数由分类器对象调用。
函数的相关参数介绍:
参数 | 说明 |
---|---|
image | 待检测图片,使用灰度图识别效果好 |
objects | 表示检测到的人脸目标序列 |
scaleFactor | 表示每次图像尺寸减小的比例 |
minNeighbors | 表示每一个目标至少要被检测到3次才算是真的目标(因为周围的像素和不同的窗口大小都可以检测到人脸), |
flags | 要么使用默认值,要么使用CV_HAAR_DO_CANNY_PRUNING,如果设置为 CV_HAAR_DO_CANNY_PRUNING,那么函数将会使用Canny边缘检测来排除边缘过多或过少的区域, 因此这些区域通常不会是人脸所在区域; |
minSize | 目标最小尺寸 |
maxSize | 目标最大尺寸 |
cv2.rectangle(img, pt1, pt2, color, thickness)
rectangle()经常使用的参数:
参数 | 说明 |
---|---|
img | 要操作的图片 |
pt1 | 矩形框的左上角坐标 |
pt2 | 矩形框的右下角坐标 |
color | 矩形框线条颜色 |
thickness | 矩形框的线条粗细 |
我使用女神做了测试,我们看看效果:
我编写的一个opencv人脸识别案例:地址YueXia/Face-opencv - 码云 - 开源中国 (gitee.com)
个人博客网站,灵动空间,欢迎访问
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。