Python3利用Dlib实现摄像头实时人脸检测和平铺显示示例


Posted in Python onFebruary 21, 2019

1. 引言

在某些场景下,我们不仅需要进行实时人脸检测追踪,还要进行再加工;这里进行摄像头实时人脸检测,并对于实时检测的人脸进行初步提取;

单个/多个人脸检测,并依次在摄像头窗口,实时平铺显示检测到的人脸;

Python3利用Dlib实现摄像头实时人脸检测和平铺显示示例

图 1 动态实时检测效果图

检测到的人脸矩形图像,会依次平铺显示在摄像头的左上方;

当多个人脸时候,也能够依次铺开显示;

左上角窗口的大小会根据捕获到的人脸大小实时变化;

Python3利用Dlib实现摄像头实时人脸检测和平铺显示示例

图 2 单个/多个人脸情况下摄像头识别显示结果

2. 代码实现

主要分为三个部分:

摄像头调用,利用 OpenCv 里面的cv2.VideoCapture();

人脸检测,这里利用开源的 Dlib 框架,Dlib 中人脸检测具体可以参考Python 3 利用 Dlib 19.7 进行人脸检测;

图像填充,剪切部分可以参考Python 3 利用 Dlib 实现人脸检测和剪切;

2.1 摄像头调用

Python 中利用 OpenCv 调用摄像头的一个例子how_to_use_camera.py:

# OpenCv 调用摄像头
# 默认调用笔记本摄像头

# Author:  coneypo
# Blog:   http://www.cnblogs.com/AdaminXie
# GitHub:  https://github.com/coneypo/Dlib_face_cut
# Mail:   coneypo@foxmail.com

import cv2

cap = cv2.VideoCapture(0)

# cap.set(propId, value)
# 设置视频参数: propId - 设置的视频参数, value - 设置的参数值
cap.set(3, 480)

# cap.isOpened() 返回 true/false, 检查摄像头初始化是否成功
print(cap.isOpened())

# cap.read()
""" 
返回两个值
  先返回一个布尔值, 如果视频读取正确, 则为 True, 如果错误, 则为 False; 
  也可用来判断是否到视频末尾;
  
  再返回一个值, 为每一帧的图像, 该值是一个三维矩阵;
  
  通用接收方法为: 
    ret,frame = cap.read();
    ret: 布尔值;
    frame: 图像的三维矩阵;
    这样 ret 存储布尔值, frame 存储图像;
    
    若使用一个变量来接收两个值, 如:
      frame = cap.read()
    则 frame 为一个元组, 原来使用 frame 处需更改为 frame[1]
"""

while cap.isOpened():
  ret_flag, img_camera = cap.read()
  cv2.imshow("camera", img_camera)

  # 每帧数据延时 1ms, 延时为0, 读取的是静态帧
  k = cv2.waitKey(1)

  # 按下 's' 保存截图
  if k == ord('s'):
    cv2.imwrite("test.jpg", img_camera)

  # 按下 'q' 退出
  if k == ord('q'):
    break

# 释放所有摄像头
cap.release()

# 删除建立的所有窗口
cv2.destroyAllWindows()

2.2 人脸检测

利用 Dlib 正向人脸检测器,dlib.get_frontal_face_detector()

对于本地人脸图像文件,一个利用 Dlib 进行人脸检测的例子:

人脸检测对于机器性能占用不高,但是如果要进行实时的图像裁剪拼接,计算量可能比较大,所以可能会出现卡顿;

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python中PIL安装简单教程
Apr 21 Python
使用Python编写一个最基础的代码解释器的要点解析
Jul 12 Python
Python3爬虫学习入门教程
Dec 11 Python
pyhanlp安装介绍和简单应用
Feb 22 Python
Python3.5基础之变量、数据结构、条件和循环语句、break与continue语句实例详解
Apr 26 Python
python tkinter组件摆放方式详解
Sep 16 Python
python3多线程知识点总结
Sep 26 Python
python集成开发环境配置(pycharm)
Feb 14 Python
关于Python 中的时间处理包datetime和arrow的方法详解
Mar 19 Python
Eclipse配置python默认头过程图解
Apr 26 Python
在python里使用await关键字来等另外一个协程的实例
May 04 Python
Django实现drf搜索过滤和排序过滤
Jun 21 Python
Python利用itchat库向好友或者公众号发消息的实例
Feb 21 #Python
python使用wxpy轻松实现微信防撤回的方法
Feb 21 #Python
Python开发网站目录扫描器的实现
Feb 21 #Python
Python爬虫之UserAgent的使用实例
Feb 21 #Python
利用python实现在微信群刷屏的方法
Feb 21 #Python
Python实现微信自动好友验证,自动回复,发送群聊链接方法
Feb 21 #Python
使用python itchat包爬取微信好友头像形成矩形头像集的方法
Feb 21 #Python
You might like
setcookie中Cannot modify header information-headers already sent by错误的解决方法详解
2013/05/08 PHP
php cookie中点号(句号)自动转为下划线问题
2014/10/21 PHP
PHP采用get获取url汉字出现乱码的解决方法
2014/11/13 PHP
php实现refresh刷新页面批量导入数据的方法
2014/12/23 PHP
php的socket编程详解
2016/11/20 PHP
一个用javascript写的select支持上下键、首字母筛选以及回车取值的功能
2009/09/09 Javascript
你必须知道的JavaScript 中字符串连接的性能的一些问题
2013/05/07 Javascript
javascript常用的正则表达式实例
2014/05/15 Javascript
ECMAScript6新增值比较函数Object.is
2015/06/12 Javascript
基于jQuery实现select下拉选择可输入附源码下载
2016/02/03 Javascript
js中window.open的参数及注意注意事项
2016/07/06 Javascript
jQuery简单获取DIV和A标签元素位置的方法
2017/02/07 Javascript
angular4 如何在全局设置路由跳转动画的方法
2017/08/30 Javascript
JS实现的将html转为pdf功能【基于浏览器端插件jsPDF】
2018/02/06 Javascript
JQuery元素快速查找与操作
2018/04/22 jQuery
Bootstrap Table实现定时刷新数据的方法
2018/08/13 Javascript
JavaScript键盘事件常见用法实例分析
2019/01/03 Javascript
express启用https使用小记
2019/05/21 Javascript
JavaScript 斐波那契数列 倒序输出 输出100以内的质数代码实例
2019/09/11 Javascript
nodejs dgram模块广播+组播的实现示例
2019/11/04 NodeJs
Vue父子之间值传递的实例教程
2020/07/02 Javascript
用Python实现一个简单的线程池
2015/04/07 Python
Python查询阿里巴巴关键字排名的方法
2015/07/08 Python
详解 Python 读写XML文件的实例
2017/08/02 Python
Python实现的微信支付方式总结【三种方式】
2019/04/13 Python
windows中安装Python3.8.0的实现方法
2019/11/19 Python
Python栈的实现方法示例【列表、单链表】
2020/02/22 Python
Django中从mysql数据库中获取数据传到echarts方式
2020/04/07 Python
JavaScript+Canvas实现自定义画板的示例代码
2019/05/13 HTML / CSS
Brora官网:英国领先的羊绒服装品牌
2019/08/28 全球购物
Perfume’s Club美国官网:西班牙第一家在线美容店
2020/06/10 全球购物
医学生实习自荐信
2013/10/01 职场文书
初一体育教学反思
2014/01/29 职场文书
围城读书笔记
2015/06/26 职场文书
创业计划书之DIY自助厨房
2019/09/06 职场文书
React 高阶组件HOC用法归纳
2021/06/13 Javascript