python利用dlib获取人脸的68个landmark
作者:明素07 发布时间:2023-07-25 15:28:19
标签:python,dlib,人脸
(1) 单人脸情况
import cv2
import dlib
path = "1.jpg"
img = cv2.imread(path)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
#人脸检测画框
detector = dlib.get_frontal_face_detector()
# 获取人脸关键点检测器
predictor = dlib.shape_predictor("shape_predictor_68_face_landmarks.dat")
#获取人脸框位置信息
dets = detector(gray, 1)#1表示采样(upsample)次数 0识别的人脸少点,1识别的多点,2识别的更多,小脸也可以识别
for face in dets:
shape = predictor(img, face) # 寻找人脸的68个标定点
# 遍历所有点,打印出其坐标,并圈出来
for pt in shape.parts():
pt_pos = (pt.x, pt.y)
cv2.circle(img, pt_pos, 2, (0, 0, 255), 1)#img, center, radius, color, thickness
cv2.imshow("image", img)
cv2.waitKey(0)
cv2.destroyAllWindows()
(2) 多人脸情况
import cv2
import dlib
path1 = "zxc.jpg"
img = cv2.imread(path1)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
#人脸检测画框
detector = dlib.get_frontal_face_detector()
# 获取人脸关键点检测器
predictor = dlib.shape_predictor("shape_predictor_68_face_landmarks.dat")
#获取人脸框位置信息
dets = detector(gray, 1)#1表示采样(upsample)次数 0识别的人脸少点,1识别的多点,2识别的更多,小脸也可以识别
for i in range(len(dets)):
shape = predictor(img, dets[i]) # 寻找人脸的68个标定点
# 遍历所有点,打印出其坐标,并圈出来
for pt in shape.parts():
pt_pos = (pt.x, pt.y)
cv2.circle(img, pt_pos, 2, (0, 0, 255), 1)#img, center, radius, color, thickness
cv2.imshow("image", img)
cv2.waitKey(0)#等待键盘输入
cv2.destroyAllWindows()
(3) 获取电脑摄像头实时识别标定
import cv2
import dlib
import numpy as np
cap = cv2.VideoCapture(0)#打开笔记本的内置摄像头,若参数是视频文件路径则打开视频
cap.isOpened()
def key_points(img):
points_keys = []
PREDICTOR_PATH = "shape_predictor_68_face_landmarks.dat"
detector = dlib.get_frontal_face_detector()
predictor = dlib.shape_predictor(PREDICTOR_PATH)
rects = detector(img,1)
for i in range(len(rects)):
landmarks = np.matrix([[p.x,p.y] for p in predictor(img,rects[i]).parts()])
for point in landmarks:
pos = (point[0,0],point[0,1])
points_keys.append(pos)
cv2.circle(img,pos,2,(255,0,0),-1)
return img
while(True):
ret, frame = cap.read()#按帧读取视频,ret,frame是cap.read()方法的两个返回值。其中ret是布尔值,如果读取帧是正确的则返回True,如果文件读取到结尾,它的返回值就为False。frame就是每一帧的图像,是个三维矩阵。
# gray = cv2.cvtColor(frame)
face_key = key_points(frame)
cv2.imshow('frame',face_key)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()#释放摄像头
cv2.destroyAllWindows()#关闭所有图像窗口
来源:https://blog.csdn.net/weixin_41384967/article/details/103237584
0
投稿
猜你喜欢
- 灵感来源之前在B站看到一个有意思的视频:【B站】【亦】终极云游戏!五千人同开一辆车,复现经典群体智慧实验大家可以看看,很有意思。up主通过代
- 本文实例讲述了Python面向对象之私有属性和私有方法。分享给大家供大家参考,具体如下:01. 应用场景及定义方式应用场景在实际开发中,对象
- python编写计算器,供大家参考,具体内容如下(1)计算器界面如下:(2)基本满足了计算器的所有需求,使用时不可键盘输入,只能鼠标点击左键
- 从文本文件中调出记录出现丢失换行?解决方法:<%Dim fsDim tsset fs=Server.Cr
- 一.WITH AS的含义 WITH AS短语,也叫做子查询部分(subquery factoring),可以让你做很多事情,定义一个SQL片
- overflow:hidden这个CSS样式是大家常用到的CSS样式,但是大多数人对这个样式的理解仅仅局限于隐藏溢出,而对于清除浮动这个含义
- <input type=button value=刷新 onclick="hist
- 你的SQL Server最近是否运行不正常?不,我指的不是我们肯定会遇到的通常的数据库和操作系统问题。我的意思是,你是否经历过服务器的反应迟
- 每个 batch 前清空梯度,否则会将不同 batch 的梯度累加在一块,导致模型参数错误。然后我们将输入和目标张量都移动到所需的设备上,并
- 上期回顾上一次的图像清晰度评价没有成功,主要的原因是那几张图像清晰度评价函数都实际都采用了梯度求解,不同的场景灰度的明暗不同,梯度可能会很大
- 本文实例讲述了Python定时任务sched模块用法。分享给大家供大家参考,具体如下:通过sched模块可以实现通过自定义时间,自定义函数,
- 今天是五一劳动节,可是我们劳动人民的节日哦。很多大网站都设计了特殊的logo来表示向每一位普通的劳动者致敬!下面就让我们看看这些logo吧!
- 对python中的控制条件、循环和跳出详解代码缩进(代码块):python用缩进表示代码块,没有其他语言的大括号缩进是强制检查,整个代码缩进
- 最近的项目涉及到很多表单的制作,特别是复选框(checkbox)和单选框(radio)。但是在前端开发过程中发现,单(复)选框和它们后面的提
- <script> Function.prototype.$bind=function(object) {  
- 1983年1月19日,苹果公司发布乔布斯领导研制的新一代电脑Lisa,当时Lisa电脑的设计人员就认为,必须将立即执行的命令和需要用户附加输
- 在国内外大中型数据库管理系统中,把ORACLE作为数据库管理平台的用户比较多。RACLE 不论是数据库管理能力还是安全性都是无可非
- 本文实例为大家分享了Django实现分页功能,为了容易区别功能的展现,先创建一个数据库,用数据库中的数据做演示。创建数据库步骤如下:1.创建
- 这里所说的“小偷”指的是在ASP中运用XML中的xmlhttp组件提供的强大功能,把远程网站上的数据(图片,网页及其他文件)抓取采集到本地,
- 一个是没有对输入的数据进行过滤(过滤输入),还有一个是没有对发送到数据库的数据进行转义(转义输出)。这两个重要的步骤缺一不可,需要同时加以特