python dlib 面部轮廓实时检测
1、dlib 实现动态人脸检测及面部轮廓检测
模型下载连接 : http://dlib.net/files/
# coding:utf-8
import cv2
import os import dlib # http://blog.topspeedsnail.com/archives/6935 def assure_path_exists(path):
dir = os.path.dirname(path)
if not os.path.exists(dir):
os.makedirs(dir) # 开始捕获视频
vid_cam = cv2.VideoCapture(0) # 利用Haarcascade正面检测视频流中的目标
# face_detector = cv2.CascadeClassifier('./face_model/haarcascade_frontalface_default.xml') # 每录入一张人脸的时候在这里写一个id,记住一点就是每个人的ID都不能相同。
face_id = 1 # 使用 Dlib 的正面人脸检测器 frontal_face_detector
detector = dlib.get_frontal_face_detector() # Dlib 的 68点模型
predictor = dlib.shape_predictor("./face_model/shape_predictor_68_face_landmarks.dat") # 初始化样本人脸图像
count = 0
path = "./dataTest"
assure_path_exists(path)
win = dlib.image_window() # 开始循环
while (True): # 捕获的视频帧
_, image_frame = vid_cam.read() # 帧转换为灰度图
# gray = cv2.cvtColor(image_frame, cv2.COLOR_BGR2GRAY) # 检测不同大小的帧,人脸矩形列表,返回四个值就是人脸位置的坐标
# faces = face_detector.detectMultiScale(image_frame, 1.3, 5) # 使用 detector 检测器来检测图像中的人脸 faces = detector(image_frame, 1)
print("人脸数:", len(faces), ) # [im for im in faces]
win.clear_overlay()
win.set_image(image_frame) for i, d in enumerate(faces):
print("第", i + 1, "个人脸的矩形框坐标:",
"left:", d.left(), "right:", d.right(), "top:", d.top(), "bottom:", d.bottom()) # cv2.rectangle(image_frame, (d.left(), d.top()), (d.right(), d.bottom()), (255, 0, 0), 2) # 使用predictor来计算面部轮廓
shapes = predictor(image_frame, faces[i])
# 'num_parts', 'part', 'parts', 'rect']
# print(dir(shapes.parts)) # 绘制面部轮廓
win.add_overlay(shapes) # 绘制矩阵轮廓
win.add_overlay(faces) # cv2.imshow('frame', image_frame) # 停止录像,按“q”键至少100ms
if cv2.waitKey(100) & 0xFF == ord('q'):
break # 如果拍摄的图像达到100,停止拍摄视频
# elif count == 10:
# break # 停止视频
dlib.hit_enter_to_continue()
python dlib 面部轮廓实时检测的更多相关文章
- Python 3 利用 Dlib 实现摄像头实时人脸检测和平铺显示
1. 引言 在某些场景下,我们不仅需要进行实时人脸检测追踪,还要进行再加工:这里进行摄像头实时人脸检测,并对于实时检测的人脸进行初步提取: 单个/多个人脸检测,并依次在摄像头窗口,实时平铺显示检测到的 ...
- opencv+python+dlib人脸关键点检测、实时检测
安装的是anaconde3.python3.7.3,3.7环境安装dlib太麻烦, 在anaconde3中新建环境python3.6.8, 在3.6环境下安装dlib-19.6.1-cp36-cp36 ...
- Python OpenCV4趣味应用系列(四)---颜色物体实时检测
今天,我们来实现一个视频实时检测颜色物体的小实例,视频中主要有三个颜色物体,我们只检测红色和绿色的球状物体,如下图所示: 第一步需要打开视频(或者摄像头): cap = cv2.VideoCaptur ...
- OpenCV/Python/dlib眨眼检测
今天我们来使用面部标志和OpenCV 检测和计算视频流中的眨眼次数. 为了构建我们的眨眼检测器,我们将计算一个称为眼睛纵横比(EAR)的指标,由Soukupová和Čech在其2016年的论文&quo ...
- dlib 基于摄像流检测眨眼次数
眼睛纵横比(EAR) 在讨论EAR之前,先看看68个人脸特征点: 人脸特征点检测本身的算法是很复杂的,dlib中给出了相关的实现. 每只眼睛由6个(x,y)坐标表示,从眼睛的左角开始,然后围绕该区域 ...
- python dlib学习(五):比对人脸
前言在前面的博客中介绍了,如何使用dlib标定人脸(python dlib学习(一):人脸检测),提取68个特征点(python dlib学习(二):人脸特征点标定).这次要在这两个工作的基础之上,将 ...
- python脚本实现集群检测和管理
python脚本实现集群检测和管理 场景是这样的:一个生产机房,会有很多的测试机器和生产机器(也就是30台左右吧),由于管理较为混乱导致了哪台机器有人用.哪台机器没人用都不清楚,从而产生了一个想法-- ...
- 页面刷新方式实时检测cookie是否失效
在浏览器端每隔10秒钟刷新一次页面,可用于检查cookie值是否失效. 在study.php文件中存在这样一条语句: <meta http-equiv="refresh" c ...
- [C++]Linux之网络实时检测功能
声明:如需引用或者摘抄本博文源码或者其文章的,请在显著处注明,来源于本博文/作者,以示尊重劳动成果,助力开源精神.也欢迎大家一起探讨,交流,以共同进步,乃至成为朋友- 0.0 由于学习操作系统实验课程 ...
随机推荐
- Kprobe
linux内核源码Documentation目录下存在kprobe介绍文档如下 Kprobes allows multiple probes at the same address. Current ...
- return 返回字符串
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Cons ...
- centos7 nginx端口转发出现502的其中一种原因
在排查了一系列可能的原因后仍无法解决,经资料查阅可能是SELinux造成,SELinux很强大但若配置不当也会造成很多组件无法正常使用,这里直接将其关闭: //打开配置文件 vi /etc/selin ...
- Kubernetes初探 :总体概述及使用示例
Kubernetes是Google开源的容器集群管理系统.它构建于docker技术之上,为容器化的应用提供资源调度.部署运行.服务发现.扩容缩容等整一套功能,本质上可看作是基于容器技术的mini-Pa ...
- 【Python】python基础_代码编写注意事项
1. 说明使用的编译方式 1 #!/usr/bin/python 2. 说明字符编码方式 1 #coding=utf-8 3. print 默认输出是换行的,如果要实现不换行需要在变量末尾加上逗号 # ...
- 【Windows】Windows Restart Manager 重启管理器
Restart Manager(以下简称RM)可以减少或避免安装或更新程序所需要的系统重启次数.安装(或更新)过程中需要重启的主要原因是需要更新的某些文件当前正被一些其它程序或服务所使用.RM允许除关 ...
- bzoj3473字符串&bzoj3277串
题意:给定n个字符串,询问每个字符串有多少子串(不包括空串)是所有n个字符串中至少k个字符串的子串.注意本质相同的子串多次出现算多次,如1 1 aaa这组数据答案为6,贡献1WA.代码里有些部分是为了 ...
- 【BZOJ4892】DNA(后缀数组)
[BZOJ4892]DNA(后缀数组) 题面 BZOJ 洛谷 题解 看到这道题目,我第一反应是\(FFT\)??? 然后大力码出了一个\(FFT\) 就像这样 #include<iostream ...
- 项目管理---git----快速使用git笔记(五)------本地项目代码提交到远程仓库---新建项目
上一篇我们已经知道了怎么从远程仓库获取项目文件代码. 项目管理---git----快速使用git笔记(四)------远程项目代码的首次获取 git还有一种使用场景是 我本来在电脑里就有一个项目,现在 ...
- 【贪心】【CF3D】 Least Cost Bracket Sequence
传送门 Description 给一个序列,序列里面会有左括号.问号.右括号.对于一个\(?\)而言,可以将其替换为一个\((\),也可以替换成一个\()\),但是都有相应的代价.问:如何替换使得代价 ...