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

 更新时间:2020年09月21日 14:12:59   作者:南叔先生  
这篇文章主要介绍了python3.8动态人脸识别的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

一、准备依赖库

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动态人脸识别内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Laravel+Dingo/Api 自定义响应的实现

    Laravel+Dingo/Api 自定义响应的实现

    这篇文章主要介绍了Laravel+Dingo/Api 自定义响应的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-02-02
  • python常用函数random()函数详解

    python常用函数random()函数详解

    这篇文章主要介绍了python常用函数random()函数,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-02-02
  • python psutil模块使用方法解析

    python psutil模块使用方法解析

    这篇文章主要介绍了python psutil模块使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • 如何让python程序正确高效地并发

    如何让python程序正确高效地并发

    这篇文章主要介绍了如何让python程序正确高效地并发,文章围绕主题的相关资料展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-06-06
  • Python脚本判断 Linux 是否运行在虚拟机上

    Python脚本判断 Linux 是否运行在虚拟机上

    这篇文章主要介绍了Python脚本判断 Linux 是否运行在虚拟机上,本文讲解了判断 OpenVZ/Xen PV/UML、判断 VMware/Xen HVM/KVM、判断 VirtualBox/Virtual PC等方法,需要的朋友可以参考下
    2015-04-04
  • Python合并多张图片成PDF

    Python合并多张图片成PDF

    最近需要将记的笔记整理成一个pdf进行保存,所以就研究了一下如何利用Python代码将拍下来的照片整个合并成一个pdf,感兴趣的可以了解一下
    2021-06-06
  • Pycharm中安装Pygal并使用Pygal模拟掷骰子(推荐)

    Pycharm中安装Pygal并使用Pygal模拟掷骰子(推荐)

    这篇文章主要介绍了Pycharm中安装Pygal并使用Pygal模拟掷骰子,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-04-04
  • PYTHON基础-时间日期处理小结

    PYTHON基础-时间日期处理小结

    PYTHON时间日期处理函数以datetime为中心, 起点或中转, 转化为目标对象, 涵盖了大多数业务场景中需要的日期转换处理,这里就为大家介绍一下,需要的朋友可以参考下
    2018-05-05
  • flask上使用websocket的方法示例

    flask上使用websocket的方法示例

    本文主要介绍了flask上使用websocket的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • 用实例分析Python中method的参数传递过程

    用实例分析Python中method的参数传递过程

    这篇文章主要介绍了用实例分析Python中method的参数传递过程,包括instancemethod和staticmethod等实例,需要的朋友可以参考下
    2015-04-04

最新评论