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

相关文章

  • python爬虫入门教程--正则表达式完全指南(五)

    python爬虫入门教程--正则表达式完全指南(五)

    要想做爬虫,不可避免的要用到正则表达式,如果是简单的字符串处理,类似于split,substring等等就足够了,可是涉及到比较复杂的匹配,当然是正则的天下,下面这篇文章主要给大家介绍了python爬虫之正则表达式的相关资料,需要的朋友可以参考下。
    2017-05-05
  • Python使用pydub模块转换音频格式以及对音频进行剪辑

    Python使用pydub模块转换音频格式以及对音频进行剪辑

    这篇文章主要给大家介绍了关于Python使用pydub模块转换音频格式以及对音频进行剪辑的相关资料pydub是python的高级一个音频处理库,可以让你以一种不那么蠢的方法处理音频。需要的朋友可以参考下
    2021-06-06
  • Python常见的错误以及其解决方案

    Python常见的错误以及其解决方案

    这篇文章主要给大家介绍了关于Python常见的错误以及其解决方案的相关资料,学习python任重而道远,对于初学者来说,最难受的就是报错,本文总结了一些常见错误,需要的朋友可以参考下
    2023-08-08
  • python基础之错误和异常处理

    python基础之错误和异常处理

    这篇文章主要介绍了python错误和异常处理,实例分析了Python中返回一个返回值与多个返回值的方法,需要的朋友可以参考下
    2021-10-10
  • 解决python3中解压zip文件是文件名乱码的问题

    解决python3中解压zip文件是文件名乱码的问题

    下面小编就为大家分享一篇解决python3中解压zip文件是文件名乱码的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-03-03
  • Django实现自定义404,500页面教程

    Django实现自定义404,500页面教程

    这篇文章主要介绍了Django实现自定义404,500页面的详细方法,非常简单实用,有需要的小伙伴可以参考下
    2017-03-03
  • 简单实现python画圆功能

    简单实现python画圆功能

    这篇文章主要为大家详细介绍了简单实现python画圆功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-01-01
  • 提高python代码可读性利器pycodestyle使用详解

    提高python代码可读性利器pycodestyle使用详解

    鉴于 Python 在数据科学中的流行,我将深入研究 pycodestyle 的使用方法,以提高 Python 代码的质量和可读性。如果你想提升代码质量,欢迎收藏学习,有所收获,点赞支持
    2021-11-11
  • Pytorch转tflite方式

    Pytorch转tflite方式

    这篇文章主要介绍了Pytorch转tflite方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-05-05
  • Django+uni-app实现数据通信中的请求跨域的示例代码

    Django+uni-app实现数据通信中的请求跨域的示例代码

    这篇文章主要介绍了Django+uni-app实现数据通信中的请求跨域的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10

最新评论