python视频人脸识别教程_Python学习笔记之视频人脸检测识别实例教程
前言
上一篇博文与大家分享了简单的图片人脸识别技术,其实在实际应用中,很多是通过视频流的方式进行识别,比如人脸识别通道门禁考勤系统、人脸动态跟踪识别系统等等。
下面话不多说了,来一起看看详细的介绍吧
案例
这里我们还是使用 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学习笔记之视频人脸检测识别实例教程相关推荐
- python编程16章教程_Python学习笔记__16.2章 TCP编程
# 这是学习廖雪峰老师python教程的学习笔记 Socket是网络编程的一个抽象概念.通常我们用一个Socket表示"打开了一个网络链接",而打开一个Socket需要知道目标计算 ...
- python里while的用法_Python学习笔记之While循环用法分析
本文实例讲述了Python学习笔记之While循环用法.分享给大家供大家参考,具体如下: 前面一篇<Python学习笔记之For循环用法>详细介绍了Python for循环,这里再来讲述一 ...
- python中if语句使用_Python学习笔记之if语句的使用示例
前言 条件语句在实际开发中我们已经使用过几次了,在这里我们需要再次隆重的来介绍一下它,下面话不多说了,来一起看看详细的介绍吧. if语句 顾名思义,该语句为判断语句,先来一个简单的示例 cars=[' ...
- python中while的用法_Python学习笔记之While循环用法分析
本文实例讲述了Python学习笔记之While循环用法.分享给大家供大家参考,具体如下: 前面一篇<Python学习笔记之For循环用法>详细介绍了Python for循环,这里再来讲述一 ...
- python数值类型的操作_Python学习笔记,数值类型及操作
数值类型及操作 int类型数值大小不限: 整数的进制 1,整数类型正常为10进制 2,开头加0b or 0B 为二进制 3,加0o or 0O 为8进制 4,加0x 为16进制 浮点运算中存在不确定尾 ...
- python小括号报错_Python学习记录:括号配对检测问题
Python学习记录:括号配对检测问题 一.问题描述 在练习Python程序题的时候,我遇到了括号配对检测问题. 问题描述:提示用户输入一行字符串,其中可能包括小括号 (),请检查小括号是否配对正确, ...
- python工资条教程_python学习笔记--工资条发放软件
1 #! /usr/bin/env python 2 #-*- coding: UTF-8 -*- 3 importsmtplib4 from email.mime.text importMIMETe ...
- python 操作excel 教程_Python学习笔记(十六)—Python操作Excel
Python中对Excel文件的操作包括:读.写.修改.如果要对其进行如上的操作需要导入Python的第三方模块:xlrd.xlwd.xlutils,其分别对应Python的读.写.修改的操作 一.安 ...
- python中sn的意思_python学习笔记
学习资料:<简明 Python 教程.pdf>Python是一种简单易学,功能强大的编程语言,它有高效率的高层数据结构,简单而有效地实现面向对象编程. 特点:1.简单 2.易学 3.开源, ...
最新文章
- fastText中常见问题汇总
- ubuntu 重装 nvidia_nvidia-smi指令报错:Failed to initialize NVML: Driver解决
- 每天一道LeetCode-----计算二叉树的最大深度及最小深度,判断二叉树是否是高度平衡二叉树
- requests-session类对象-0223
- 【C/C++学院】0828-数组与指针/内存分配/数据结构数组接口与封装
- python str转int_Python入门丨数据类型与转换
- Spring pom配置详解(转)
- 阿里云负载均衡SSL证书配置(更新)
- uniapp中引入colorUI
- 跨站请求伪造(CSRF)漏洞简介及靶场演示
- ICMAX解析运行内存发展新趋势 LPDDR4X将会给手机带来哪些改变?
- P1779 小胡同学的跳板
- 数据结构基础之基础(数据、计算机结构)
- win10常见问题-任务栏消失
- 微信小程序《沈航二手书》
- 计算机人脸识别算哪个专业,人脸识别属于计算机什么领域(图文)
- 五年后的深圳是天堂还是地狱?
- 如何在微信公众号分享PPT?
- 周鸿袆:给程序员忠言逆耳的几条建议
- 转载一位老码农的技术理想
热门文章
- 趣味思考--苹果剩余最大量
- 【Python】排序函数 sort、sorted 对复杂列表排序
- html css拖拽设计,css绘制三角形 和 HTML拖拽事件
- 如何将 Ubuntu 版本升级到新版本
- 如何在 Linux 终端中一次运行多个 Linux 命令(初学者教程)
- tensorflow之第一个项目MNIST数据集
- python中的字典和类的区别_Python中的 字典和字典数据类型
- 香肠派对电脑版_6款好玩的吃鸡小游戏,和平精英、香肠派对、迷你攻势、、、...
- js 获取当天时间,实现展示包含今天的一周时间的方法
- vue子组件mounted不执行_vue中父子组件传值,解决钩子函数mounted只运行一次的问题...