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使用百度翻译进行中翻英示例
Apr 14 Python
Python定时执行之Timer用法示例
May 27 Python
python二维列表一维列表的互相转换实例
Jul 02 Python
python使用ddt过程中遇到的问题及解决方案【推荐】
Oct 29 Python
python xpath获取页面注释的方法
Jan 14 Python
Python实现最大子序和的方法示例
Jul 05 Python
numpy np.newaxis 的实用分享
Nov 30 Python
简单了解python字符串前面加r,u的含义
Dec 26 Python
python Popen 获取输出,等待运行完成示例
Dec 30 Python
python实现在线翻译功能
Mar 03 Python
python3 使用ssh隧道连接mysql的操作
Dec 05 Python
Python 中 sorted 如何自定义比较逻辑
Feb 02 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
PHP查询快递信息的方法
2015/03/07 PHP
php文件下载处理方法分析
2015/04/22 PHP
PHP读取Excel内的图片(phpspreadsheet和PHPExcel扩展库)
2019/11/19 PHP
Thinkphp 框架配置操作之配置加载与读取配置实例分析
2020/05/15 PHP
js 验证密码强弱的小例子
2013/03/21 Javascript
深入了解javascript中的prototype与继承
2013/04/14 Javascript
方便实用的jQuery checkbox复选框全选功能简单实例
2013/10/09 Javascript
input禁止键盘及中文输入,但可以点击
2014/02/13 Javascript
js自制图片放大镜功能
2017/01/24 Javascript
layui使用数据表格实现购物车功能
2019/07/26 Javascript
Vue 中获取当前时间并实时刷新的实现代码
2020/05/12 Javascript
解决vue组件没显示,没起作用,没报错,但该显示的组件没显示问题
2020/09/02 Javascript
python显示天气预报
2014/03/02 Python
对Python中type打开文件的方式介绍
2018/04/28 Python
python basemap 画出经纬度并标定的实例
2019/07/09 Python
python 二维矩阵转三维矩阵示例
2019/11/30 Python
pytorch实现mnist数据集的图像可视化及保存
2020/01/14 Python
Pytest框架之fixture的详细使用教程
2020/04/07 Python
为什么相对PHP黑python的更少
2020/06/21 Python
浅谈python 类方法/静态方法
2020/09/18 Python
用HTML5制作一个简单的桌球游戏的教程
2015/05/12 HTML / CSS
墨西哥运动服饰和鞋网上商店:Netshoes墨西哥
2016/07/28 全球购物
Wedgwood美国官网:英国骨瓷,精美礼品及家居装饰
2018/02/17 全球购物
Tea Collection官网:一家位于旧金山的童装公司
2020/08/07 全球购物
自荐信格式写作方法有哪些呢
2013/11/20 职场文书
水务局局长岗位职责
2013/11/28 职场文书
老师给学生的表扬信
2014/01/17 职场文书
yy生日主持词
2014/03/20 职场文书
应届大专生求职信
2014/06/26 职场文书
学校党的群众路线教育实践活动总结报告
2014/07/03 职场文书
网吧消防安全责任书
2014/07/29 职场文书
2014年学校后勤工作总结
2014/12/06 职场文书
2015年网络管理员工作总结
2015/05/21 职场文书
讲座开场白台词和结束语
2015/05/29 职场文书
图文详解nginx日志切割的实现
2022/01/18 Servers
JavaScript实现外溢动态爱心的效果的示例代码
2022/03/21 Javascript