1 Star 4 Fork 0

Li_Xibat/Face_find

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
笑脸检测.py 1.91 KB
一键复制 编辑 原始数据 按行查看 历史
Li_Xibat 提交于 2021-12-28 09:19 +08:00 . 12.28 9:18 change
import cv2
# 导入级联分类器引擎
face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')
smile_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_smile.xml')
# 调用摄像头
cap = cv2.VideoCapture(0)
while (True):
# 获取摄像头拍摄到的画面
# cap.read()返回两个参数。ret:值为true或false,表示获取画面成功或失败, frame:获取到的画面是三维数组
ret, frame = cap.read()
# 用人脸级联分类器引擎进行人脸识别,返回的faces为人脸坐标列表,1.3是放大比例,2是重复次数(越大精确度越高)
faces = face_cascade.detectMultiScale(frame, scaleFactor=1.2, minNeighbors=5, minSize=(32, 32))
img = frame
for (x, y, w, h) in faces:
# 画出人脸框,蓝色,画笔宽度为2
# (x,y):左上角坐标 (x+w,y+h):右下角坐标
img = cv2.rectangle(img, (x, y), (x + w, y + h), (255, 0, 0), 2)
# 框选出人脸区域,在人脸区域而不是全图中进行人眼检测,节省计算资源
face_area = img[y:y + h, x:x + w]
# 用微笑级联分类器引擎在人脸区域进行微笑检测
smiles = smile_cascade.detectMultiScale(face_area, scaleFactor=1.16, minNeighbors=120, minSize=(25, 25),
flags=cv2.CASCADE_SCALE_IMAGE)
for (ex, ey, ew, eh) in smiles:
# 画出微笑框,红色(BGR色彩体系),画笔宽度为1
cv2.rectangle(face_area, (ex, ey), (ex + ew, ey + eh), (0, 0, 255), 1)
cv2.putText(img, "smile", (x, y - 7), 3, 1.2, (0, 0, 225), 2, cv2.LINE_AA)
# 实时展示效果画面
cv2.imshow('frame2', img)
# 每5毫秒监听一次键盘动作,按q键结束
if cv2.waitKey(5) & 0xFF == ord("q"):
break
# 关闭摄像头
cap.release()
# 关闭所有窗口
cv2.destroyAllWindows()
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Python
1
https://gitee.com/LiXibat/face_find.git
git@gitee.com:LiXibat/face_find.git
LiXibat
face_find
Face_find
master

搜索帮助