上一个博客里写了 面部标志是什么,如何利用dlib进行图片中的面部标志检测;

这篇博客扩展了面部标志的检测,并将其应用于实时检测任务。如何在实时的视频流中进行人脸标志检测。

实时视频流面部标志检测

  • 1. 原理
  • 2. 步骤
  • 3. 源码
  • 4. 参考

1. 原理

在图像中检测面部标志与在视频流中检测面部标志之间几乎没有区别,主要区别是是设置视频流指针,然后在流中轮询帧的部分。

2. 步骤

  1. 解析配置项,读取电脑自带的摄像头或者视频文件流;
  2. 预热摄像头;
  3. 使用线程池化的方式读取每一帧,并处理;
  4. 对每一帧进行面部检测,面部标志检测;
  5. 绘制检测结果到每一帧的图像上;
  6. 关闭资源;

3. 源码

# 导入必要的包
from imutils.video import VideoStream
from imutils import face_utils
import datetime
import argparse
import imutils
import time
import dlib
import cv2# 构建命令行参数和解析
# --shape-predictor dlib预先训练好的面部标志检测器
# --picamera 是否应使用Raspberry Pi摄像头模块代替默认的Webcam / USB摄像头。提供大于0的值以使用您的Raspberry Pi相机。
ap = argparse.ArgumentParser()
ap.add_argument("-p", "--shape-predictor", required=True,help="path to facial landmark predictor")
ap.add_argument("-r", "--picamera", type=int, default=-1,help="whether or not the Raspberry Pi camera should be used")
args = vars(ap.parse_args())# 初始化dlib的基于HOG + Linear SVM的面部检测器,然后从磁盘加载面部标志预测器:
print("[INFO] loading facial landmark predictor...")
detector = dlib.get_frontal_face_detector()
predictor = dlib.shape_predictor(args["shape_predictor"])# 初始化我们的VideoStream   并允许相机传感器预热:
print("[INFO] camera sensor warming up...")
vs = VideoStream(usePiCamera=args["picamera"] > 0).start()
time.sleep(2.0)# 视频处理管道的核心如下:
# 开始一个无限循环,只有在我们决定通过按键盘上的q键 时才能中断。
while True:# 从线程化的视频流中获取每一帧,保持宽高比的缩放到宽度为400像素,转换为灰度图frame = vs.read()frame = imutils.resize(frame, width=400)gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)# 在检测到框架中的面部标志之前,我们首先需要对面部进行定位-这是通过检测器完成的, 它返回图像中每个面部的边界框(x,y)坐标。rects = detector(gray, 0)# 现在我们已经检测到视频流中的面部,下一步是将面部界标预测器应用于每个面部ROI:for rect in rects:# 从面部区域中检测面部标志,并转换面部标志(x,y)坐标为Numpy数组shape = predictor(gray, rect)shape = face_utils.shape_to_np(shape)# 循环遍历面部标志的(x, y)坐标,并绘制在图像上for (x, y) in shape:cv2.circle(frame, (x, y), 1, (0, 0, 255), -1)# 展示帧cv2.imshow("Frame", frame)key = cv2.waitKey(1) & 0xFF# 按下‘q’键,终止循环if key == ord("q"):break# 做一些清理
cv2.destroyAllWindows()
vs.stop()

4. 参考

  • https://www.pyimagesearch.com/2017/04/17/real-time-facial-landmark-detection-opencv-python-dlib/

使用Python,dlib,OpenCV在实时的视频流中进行面部标志检测相关推荐

  1. Python基于OpenCV的实时疲劳检测[源码&演示视频&部署教程]

    1.图片演示 2.视频演示 [项目分享]Python基于OpenCV的实时疲劳检测[源码&演示视频&部署教程]_哔哩哔哩_bilibili 3.检测方法 1)方法 与用于计算眨眼的传统 ...

  2. python:dlib在视频流中提取面部特征点

    下载dlib库 这个库下载起来巨巨巨巨巨麻烦(当然不排除你运气比较好,一下子就成功了),具体下载方式请参考别的文章. 视频流中提取面部特征点 写在主循环之前: import numpy as np i ...

  3. OpenCV视频中的人脸标志检测

    OpenCV视频中的人脸标志检测 视频中的人脸标志检测 简介 命令参数说明 源代码 视频中的人脸标志检测 简介 此应用程序使您可以检测视频中检测到的面部的地标.此应用程序首先检测当前视频帧中的面部,然 ...

  4. python 活体检测_基于Python+Keras+OpenCV实现实时人脸活体检测 | 文末送书

    你在互联网上找到的大多数人脸识别算法和研究论文都会遭受照片***.这些方法在检测和识别来自网络摄像头的图像.视频和视频流中的人脸方面是很是有效,可是他们没法区分现实生活中的面孔和照片上的面孔.这种没法 ...

  5. 基于Python+Keras+OpenCV实现实时人脸活体检测 | 文末送书

    你在互联网上找到的大多数人脸识别算法和研究论文都会遭受照片攻击.这些方法在检测和识别来自网络摄像头的图像.视频和视频流中的人脸方面是非常有效,但是他们无法区分现实生活中的面孔和照片上的面孔.这种无法区 ...

  6. Python与OpenCV(二)——基于背景差分法的运动目标检测程序分析

    背景差分法是传统运动目标检测算法中最常用的方法.其基本原理如图所示. 从图中可知,背景差分法是通过建立背景模型,比较当前帧与背景模型对应像素的差异点来检测运动目标的方法. 背景模型的建立主要通过两种方 ...

  7. python dlib opencv人脸识别准确度_基于dlib和opencv库的人脸识别

    基于dlib和opencv库的人脸识别 需下载68个特征点的人脸检测模型: http://dlib.net/files/ 文件名为shape_predictor_68_face_landmarks.d ...

  8. python+dlib+opencv实现图像人物换脸

    偶然间看到了别人用蟒实现的换脸代码,很感兴趣就简单研究了下,原理其实不算复杂,最后自己试着用别的方法做了贴图的颜色修改,在此记录下,代码取之网络,用之网络,重在娱乐. 目录 实验环境: 算法步骤: 算 ...

  9. Python+dlib+opencv实现简单的人脸识别

    目录 一.建立人脸数据集 1.采集人脸 2.采集对应20张图片的68个特征点数组和平均特征数组 二.人脸识别 三.总结 参考资料 接上一篇博客基于dlib+opencv3.4+python3.7的人脸 ...

最新文章

  1. VS设置DLL所在的调试目录
  2. 装完Ubuntu后要干的事-安装常用软件
  3. c语言输出星期几的英语表达,C语言程序设计: 输入年月日 然后输出是星期几...
  4. java 相对路径获取_在java项目中通过相对路径获取资源的方式
  5. 微软的OneNote正在获得类似Win11风格的外观
  6. 学习笔记:CentOS7学习之二十二: 结构化命令case和for、while循环
  7. 顶级产品经理是如何写产品需求文档(PRD)的
  8. 30 年间,软件开发行业为何 Bug 纷飞?
  9. mysql 插入万条数据_你向 MySQL 插入 100万 条数据用了多久?
  10. websocket 聊天室 demo ( tornado + nginx + wss + 在线demo)
  11. minimax算法(井子棋)
  12. linux两台设备网桥配置,Linux网桥配置
  13. 树莓派系统烧录 + 连接树莓派
  14. |poj 3237|树链剖分|线段树|Tree
  15. 【论文写作PS】两张图片合为一张,不覆盖
  16. 使用GameMaker中用于碰撞检测的脚本小记
  17. c语言程序设计上海理工,2017年上海理工大学医疗器械与食品学院854C程序设计考研题库...
  18. c++: Logger日志信息
  19. cmd 实用命令以及如何装逼
  20. Python学习1-3

热门文章

  1. Android中View如何刷新
  2. 2021年大数据常用语言Scala(二十):函数式编程 介绍
  3. 2021年大数据Spark(四十三):SparkStreaming整合Kafka 0.10 开发使用
  4. 黑客基础知识与防护(二)
  5. java equal hashcode_Java(二)equal 和 hashcode使用
  6. mysql 查看表结构,字段的基本信息(简单明了)。
  7. 机器学习与算法面试太难?
  8. DB2数据库常用语句
  9. Python 源码函数格式带有*和/说明
  10. VMware 12.0 在安装的时候出现 microsoft runtime dll