这篇文章讲的是人脸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

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐