前言

上一篇博文与大家分享了简单的图片人脸识别技术,其实在实际应用中,很多是通过视频流的方式进行识别,比如人脸识别通道门禁考勤系统、人脸动态跟踪识别系统等等。

下面话不多说了,来一起看看详细的介绍吧

案例

这里我们还是使用 opencv 中自带了 haar人脸特征分类器,通过读取一段视频来识别其中的人脸。

代码实现:

# -*- coding: utf-8 -*-

__author__ = "小柒"

__blog__ = "https://blog.52itstyle.vip/"

import cv2

import os

# 保存好的视频检测人脸并截图

def CatchPICFromVideo(window_name, camera_idx, catch_pic_num, path_name):

cv2.namedWindow(window_name)

# 视频来源

cap = cv2.VideoCapture(camera_idx)

# 告诉OpenCV使用人脸识别分类器

classfier = cv2.CascadeClassifier(os.getcwd()+"\\haarcascade\\haarcascade_frontalface_alt.xml")

# 识别出人脸后要画的边框的颜色,RGB格式, color是一个不可增删的数组

color = (0, 255, 0)

num = 0

while cap.isOpened():

ok, frame = cap.read() # 读取一帧数据

if not ok:

break

grey = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) # 将当前桢图像转换成灰度图像

# 人脸检测,1.2和2分别为图片缩放比例和需要检测的有效点数

faceRects = classfier.detectMultiScale(grey, scaleFactor=1.2, minNeighbors=3, minSize=(32, 32))

if len(faceRects) > 0: # 大于0则检测到人脸

for faceRect in faceRects: # 单独框出每一张人脸

x, y, w, h = faceRect

# 将当前帧保存为图片

img_name = "%s/%d.jpg" % (path_name, num)

# print(img_name)

image = frame[y - 10: y + h + 10, x - 10: x + w + 10]

cv2.imwrite(img_name, image, [int(cv2.IMWRITE_PNG_COMPRESSION), 9])

num += 1

if num > (catch_pic_num): # 如果超过指定最大保存数量退出循环

break

# 画出矩形框

cv2.rectangle(frame, (x - 10, y - 10), (x + w + 10, y + h + 10), color, 2)

# 显示当前捕捉到了多少人脸图片了,这样站在那里被拍摄时心里有个数,不用两眼一抹黑傻等着

font = cv2.FONT_HERSHEY_SIMPLEX

cv2.putText(frame, 'num:%d/100' % (num), (x + 30, y + 30), font, 1, (255, 0, 255), 4)

# 超过指定最大保存数量结束程序

if num > (catch_pic_num): break

# 显示图像

cv2.imshow(window_name, frame)

c = cv2.waitKey(10)

if c & 0xFF == ord('q'):

break

# 释放摄像头并销毁所有窗口

cap.release()

cv2.destroyAllWindows()

if __name__ == '__main__':

# 连续截100张图像

CatchPICFromVideo("get face", os.getcwd()+"\\video\\kelake.mp4", 100, "E:\\VideoCapture")

动图有点花,讲究着看吧:

如果是捕捉摄像头,只需要改变以下代码即可:

# 如果获取摄像头,参数修改为 0 即可

cap = cv2.VideoCapture(0)

源码

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

python视频人脸识别教程_Python学习笔记之视频人脸检测识别实例教程相关推荐

  1. python编程16章教程_Python学习笔记__16.2章 TCP编程

    # 这是学习廖雪峰老师python教程的学习笔记 Socket是网络编程的一个抽象概念.通常我们用一个Socket表示"打开了一个网络链接",而打开一个Socket需要知道目标计算 ...

  2. python里while的用法_Python学习笔记之While循环用法分析

    本文实例讲述了Python学习笔记之While循环用法.分享给大家供大家参考,具体如下: 前面一篇<Python学习笔记之For循环用法>详细介绍了Python for循环,这里再来讲述一 ...

  3. python中if语句使用_Python学习笔记之if语句的使用示例

    前言 条件语句在实际开发中我们已经使用过几次了,在这里我们需要再次隆重的来介绍一下它,下面话不多说了,来一起看看详细的介绍吧. if语句 顾名思义,该语句为判断语句,先来一个简单的示例 cars=[' ...

  4. python中while的用法_Python学习笔记之While循环用法分析

    本文实例讲述了Python学习笔记之While循环用法.分享给大家供大家参考,具体如下: 前面一篇<Python学习笔记之For循环用法>详细介绍了Python for循环,这里再来讲述一 ...

  5. python数值类型的操作_Python学习笔记,数值类型及操作

    数值类型及操作 int类型数值大小不限: 整数的进制 1,整数类型正常为10进制 2,开头加0b or 0B 为二进制 3,加0o or 0O 为8进制 4,加0x 为16进制 浮点运算中存在不确定尾 ...

  6. python小括号报错_Python学习记录:括号配对检测问题

    Python学习记录:括号配对检测问题 一.问题描述 在练习Python程序题的时候,我遇到了括号配对检测问题. 问题描述:提示用户输入一行字符串,其中可能包括小括号 (),请检查小括号是否配对正确, ...

  7. python工资条教程_python学习笔记--工资条发放软件

    1 #! /usr/bin/env python 2 #-*- coding: UTF-8 -*- 3 importsmtplib4 from email.mime.text importMIMETe ...

  8. python 操作excel 教程_Python学习笔记(十六)—Python操作Excel

    Python中对Excel文件的操作包括:读.写.修改.如果要对其进行如上的操作需要导入Python的第三方模块:xlrd.xlwd.xlutils,其分别对应Python的读.写.修改的操作 一.安 ...

  9. python中sn的意思_python学习笔记

    学习资料:<简明 Python 教程.pdf>Python是一种简单易学,功能强大的编程语言,它有高效率的高层数据结构,简单而有效地实现面向对象编程. 特点:1.简单 2.易学 3.开源, ...

最新文章

  1. fastText中常见问题汇总
  2. ubuntu 重装 nvidia_nvidia-smi指令报错:Failed to initialize NVML: Driver解决
  3. 每天一道LeetCode-----计算二叉树的最大深度及最小深度,判断二叉树是否是高度平衡二叉树
  4. requests-session类对象-0223
  5. 【C/C++学院】0828-数组与指针/内存分配/数据结构数组接口与封装
  6. python str转int_Python入门丨数据类型与转换
  7. Spring pom配置详解(转)
  8. 阿里云负载均衡SSL证书配置(更新)
  9. uniapp中引入colorUI
  10. 跨站请求伪造(CSRF)漏洞简介及靶场演示
  11. ICMAX解析运行内存发展新趋势 LPDDR4X将会给手机带来哪些改变?
  12. P1779 小胡同学的跳板
  13. 数据结构基础之基础(数据、计算机结构)
  14. win10常见问题-任务栏消失
  15. 微信小程序《沈航二手书》
  16. 计算机人脸识别算哪个专业,人脸识别属于计算机什么领域(图文)
  17. 五年后的深圳是天堂还是地狱?
  18. 如何在微信公众号分享PPT?
  19. 周鸿袆:给程序员忠言逆耳的几条建议
  20. 转载一位老码农的技术理想

热门文章

  1. 趣味思考--苹果剩余最大量
  2. 【Python】排序函数 sort、sorted 对复杂列表排序
  3. html css拖拽设计,css绘制三角形 和 HTML拖拽事件
  4. 如何将 Ubuntu 版本升级到新版本
  5. 如何在 Linux 终端中一次运行多个 Linux 命令(初学者教程)
  6. tensorflow之第一个项目MNIST数据集
  7. python中的字典和类的区别_Python中的 字典和字典数据类型
  8. 香肠派对电脑版_6款好玩的吃鸡小游戏,和平精英、香肠派对、迷你攻势、、、...
  9. js 获取当天时间,实现展示包含今天的一周时间的方法
  10. vue子组件mounted不执行_vue中父子组件传值,解决钩子函数mounted只运行一次的问题...