人脸识别(81关键点)经典开源核心代码
这篇文章讲的是人脸68 个关键点开源项目
https://blog.csdn.net/ITLearnHall/article/details/102593886
现在给大家看看81个人脸关键点代码,两者最大区别就是模型使用不同,核心代码调用方法相差不是很大
68点模型(shape_predictor_68_face_landmarks.dat)
链接:https://pan.baidu.com/s/1uZ_4K5s1BiVQmgv4JbDzew 提取码:ch8x
81点模型(shape_predictor_81_face_landmarks.dat)
下载地址:https://github.com/codeniko/shape_predictor_81_face_landmarks
核心代码如下:
# -*-coding: utf-8-*-
# !/usr/bin/env python
import dlib
import numpy as np
import cv2
cap = cv2.VideoCapture(0)
# 设置保存视频格式
fourcc = cv2.VideoWriter_fourcc(*'XVID') # fourcc:指定视频编解码器的4字节代码
# 输出视频参数设置 输出视频名 视频格式 视频帧 保存视频分辨率
out = cv2.VideoWriter('output.avi',fourcc, 20.0, (1280, 720))
# 要加载的81个关键点的人脸检测模型
predictor_path = 'shape_predictor_81_face_landmarks.dat'
# 导入dlib库
detector = dlib.get_frontal_face_detector()
predictor = dlib.shape_predictor(predictor_path)
while(cap.isOpened()):
ret, frame = cap.read()
# 对图片进行垂直镜像翻转
frame = cv2.flip(frame, 1)
dets = detector(frame, 0)
for k, d in enumerate(dets):
shape = predictor(frame, d)
landmarks = np.matrix([[p.x, p.y] for p in shape.parts()])
for num in range(shape.num_parts):
cv2.circle(frame, (shape.parts()[num].x, shape.parts()[num].y), 3, (0,255,0), -1)
cv2.imshow('frame', frame)
# 把每一帧保存成视频
out.write(frame)
# 退出
if cv2.waitKey(1) & 0xFF == ord('q'):
print("q pressed")
break
# 调用release()释放摄像头,调用destroyAllWindows()关闭所有图像窗口。
cap.release()
out.release()
cv2.destroyAllWindows()
关注公众号IT-LearnHall,免费领
进QQ群(779809018)免费领取学习资源,疑难问题解答。同时欢迎大家关注我的微信公众号:代码帮 ,免费领取学习资源。
本公众号将秉持活到老学到老学习无休止的交流分享开源精神,汇聚于互联网和个人学习工作的精华干货知识,一切来于互联网,反馈回互联网。
目前研究领域:大数据、机器学习、深度学习、人工智能、数据挖掘、数据分析。 语言涉及:Java、Scala、Python、Shell、Linux等 。同时还涉及平常所使用的手机、电脑和互联网上的使用技巧、问题和实用软件**。 只要你一直关注和呆在群里,每天必须有收获,讨论和答疑QQ群:大数据和人工智能总群(779809018)微信公众号(代码帮)每天分享最新IT、大数据和人工智能新技术。
参考:
1、https://github.com/codeniko/shape_predictor_81_face_landmarks
2、https://baijiahao.baidu.com/s?id=1628339297294302540&wfr=spider&for=pc
推荐阅读