python3.8动态人脸识别的实现示例


Posted in Python onSeptember 21, 2020

一、准备依赖库

pip install dlib
pip python-opencv

二、代码实现 

#coding: utf-8
"""
从视屏中识别人脸,并实时标出面部特征点
"""
import dlib           #人脸识别的库dlib

import cv2           #图像处理的库OpenCv

# 使用特征提取器get_frontal_face_detector
detector = dlib.get_frontal_face_detector()
# 读入视频文件
# cap = cv2.VideoCapture("row.MP4")
#建cv2摄像头对象,这里使用电脑自带摄像头,如果接了外部摄像头,则自动切换到外部摄像头
cap = cv2.VideoCapture(0)

# 设置视频参数,propId设置的视频参数,value设置的参数值
cap.set(3, 480)
# 截图screenshoot的计数器
cnt = 0
# cap.isOpened() 返回true/false 检查初始化是否成功
while(cap.isOpened()):

  # cap.read()
  # 返回两个值:
  #  一个布尔值true/false,用来判断读取视频是否成功/是否到视频末尾
  #  图像对象,图像的三维矩阵
  flag, im_rd = cap.read()

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

  # 取灰度
  img_gray = cv2.cvtColor(im_rd, cv2.COLOR_RGB2GRAY)

  # 使用人脸检测器检测每一帧图像中的人脸。并返回人脸数rects
  faces = detector(img_gray, 0)

  # 待会要显示在屏幕上的字体
  font = cv2.FONT_HERSHEY_SIMPLEX

  # 如果检测到人脸
  if(len(faces)!=0):

    # 对每个人脸都画出框框
    for i in range(len(faces)):
      # enumerate方法同时返回数据对象的索引和数据,k为索引,d为faces中的对象
      for k, d in enumerate(faces):
        # 用红色矩形框出人脸
        cv2.rectangle(im_rd, (d.left(), d.top()), (d.right(), d.bottom()), (0, 255, 0),2)
        # 计算人脸热别框边长
        face_width = d.right() - d.left()
        #在上方显示文字
        cv2.putText(im_rd, str(face_width) , (d.left(), d.top()-20), font, 0.5, (255, 0, 0), 1)
    # 标出人脸数
    cv2.putText(im_rd, "Faces: "+str(len(faces)), (20,50), font, 1, (0, 0, 255), 1, cv2.LINE_AA)
  else:
    # 没有检测到人脸
    cv2.putText(im_rd, "No Face", (20, 50), font, 1, (0, 0, 255), 1, cv2.LINE_AA)

  # 添加说明
  im_rd = cv2.putText(im_rd, "S: screenshot", (20, 400), font, 0.8, (0, 0, 255), 1, cv2.LINE_AA)
  im_rd = cv2.putText(im_rd, "Q: quit", (20, 450), font, 0.8, (0, 0, 255), 1, cv2.LINE_AA)


  #检测按键
  k = cv2.waitKey(1)
  # 按下s键截图保存
  if (k == ord('s')):
    cnt+=1
    cv2.imwrite("screenshoot"+str(cnt)+".jpg", im_rd)
  # 按下q键退出
  if(k == ord('q')):
    break

  # 窗口显示
  cv2.imshow("camera", im_rd)

# 释放摄像头
cap.release()
# 删除建立的窗口
cv2.destroyAllWindows()

三、实验结果

python3.8动态人脸识别的实现示例

到此这篇关于python3.8动态人脸识别的实现示例的文章就介绍到这了,更多相关python3.8动态人脸识别内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python中__init__和__new__的区别详解
Jul 09 Python
Python读取ini文件、操作mysql、发送邮件实例
Jan 01 Python
python统计字符串中指定字符出现次数的方法
Apr 04 Python
浅析Python多线程下的变量问题
Apr 28 Python
python解决汉字编码问题:Unicode Decode Error
Jan 19 Python
详解python中requirements.txt的一切
Mar 03 Python
机器学习python实战之决策树
Nov 01 Python
如何在Python中实现goto语句的方法
May 18 Python
详解PyQt5信号与槽的几种高级玩法
Mar 24 Python
Python实现AES加密,解密的两种方法
Oct 03 Python
详解python使用金山词霸的翻译功能(调试工具断点的使用)
Jan 07 Python
Django给表单添加honeypot验证增加安全性
May 06 Python
如何在Anaconda中打开python自带idle
Sep 21 #Python
Python 实现国产SM3加密算法的示例代码
Sep 21 #Python
python如何实现DES加密
Sep 21 #Python
如何从csv文件构建Tensorflow的数据集
Sep 21 #Python
python打包多类型文件的操作方法
Sep 21 #Python
python 星号(*)的多种用途
Sep 21 #Python
Python+Selenium随机生成手机验证码并检查页面上是否弹出重复手机号码提示框
Sep 21 #Python
You might like
PHP使用gmdate实现将一个UNIX 时间格式化成GMT文本的方法
2015/03/19 PHP
php实现复制移动文件的方法
2015/07/29 PHP
CodeIgniter配置之config.php用法实例分析
2016/01/19 PHP
PHP socket 模拟POST 请求实例代码
2016/07/18 PHP
jQuery(1.3.2) 7行代码搞定跟随屏幕滚动的层
2009/05/21 Javascript
js 键盘记录实现(兼容FireFox和IE)
2010/02/07 Javascript
js中关于String对象的replace使用详解
2011/05/24 Javascript
jquery时间下拉框小例子
2013/04/15 Javascript
js弹出层包含flash 不能关闭隐藏的2种处理方法
2013/06/17 Javascript
关于js数组去重的问题小结
2014/01/24 Javascript
一张表格告诉你windows.onload()与$(document).ready()的区别
2014/05/16 Javascript
JavaScript中实现异步编程模式的4种方法
2014/09/24 Javascript
分享12个非常实用的JavaScript小技巧
2016/05/11 Javascript
Javascript使用SWFUpload进行多文件上传
2016/11/16 Javascript
如何提高Dom访问速度
2017/01/05 Javascript
用vue构建多页面应用的示例代码
2017/09/20 Javascript
JS返回顶部实例代码
2020/08/09 Javascript
Angular2实现组件交互的方法分析
2017/12/19 Javascript
JavaScript正则表达式函数总结(常用)
2018/02/22 Javascript
解决vue点击控制单个样式的问题
2018/09/05 Javascript
vue-cli项目配置多环境的详细操作过程
2018/10/30 Javascript
vue通过指令(directives)实现点击空白处收起下拉框
2018/12/06 Javascript
Vue.js轮播图走马灯代码实例(全)
2019/05/08 Javascript
vue 实现动态路由的方法
2020/07/06 Javascript
微信小程序实现页面监听自定义组件的触发事件
2020/11/01 Javascript
在elementui中Notification组件添加点击事件实例
2020/11/11 Javascript
Python数据拟合与广义线性回归算法学习
2017/12/22 Python
python批量修改文件编码格式的方法
2018/05/31 Python
Julep官网:美容产品和指甲油
2017/02/25 全球购物
英国乐购杂货:Tesco Groceries
2018/11/29 全球购物
有趣的流行文化T恤、马克杯、手机壳和更多:Look Human
2019/01/07 全球购物
GAZMAN官网:澳大利亚领先的男装品牌
2019/12/19 全球购物
大专生自我评价
2014/01/28 职场文书
事业单位竞聘上岗实施方案
2014/03/28 职场文书
大二学生学年自我鉴定
2014/09/12 职场文书
幼师辞职信范文
2015/02/27 职场文书