Python学习笔记之视频人脸检测识别实例教程


Posted in Python onMarch 06, 2019

前言

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

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

案例

这里我们还是使用 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")

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

Python学习笔记之视频人脸检测识别实例教程

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

# 如果获取摄像头,参数修改为 0 即可
cap = cv2.VideoCapture(0)

源码

https://gitee.com/52itstyle/Python/tree/master/Day09(本地下载)

总结

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

Python 相关文章推荐
Python实现基于权重的随机数2种方法
Apr 28 Python
基于Python实现对PDF文件的OCR识别
Aug 05 Python
Python切换pip安装源的方法详解
Nov 18 Python
200行自定义python异步非阻塞Web框架
Mar 15 Python
对python中矩阵相加函数sum()的使用详解
Jan 28 Python
python机器学习库scikit-learn:SVR的基本应用
Jun 26 Python
在python中,使用scatter绘制散点图的实例
Jul 03 Python
用Python实现二叉树、二叉树非递归遍历及绘制的例子
Aug 09 Python
Python分割训练集和测试集的方法示例
Sep 19 Python
Python queue队列原理与应用案例分析
Sep 27 Python
如何分离django中的媒体、静态文件和网页
Nov 12 Python
用Python实现Newton插值法
Apr 17 Python
Python学习笔记之图片人脸检测识别实例教程
Mar 06 #Python
详解django2中关于时间处理策略
Mar 06 #Python
Django使用AJAX调用自己写的API接口的方法
Mar 06 #Python
Django+Xadmin构建项目的方法步骤
Mar 06 #Python
Python中最大递归深度值的探讨
Mar 05 #Python
Python小进度条显示代码
Mar 05 #Python
Python嵌套式数据结构实例浅析
Mar 05 #Python
You might like
使用ob系列函数实现PHP网站页面静态化
2014/08/13 PHP
php中删除、清空session的方式总结
2015/10/09 PHP
php、java、android、ios通用的3des方法(推荐)
2016/09/09 PHP
thinkphp多表查询两表有重复相同字段的完美解决方法
2016/09/22 PHP
php实现跨域提交form表单的方法【2种方法】
2016/10/17 PHP
PHP基于SPL实现的迭代器模式示例
2018/04/22 PHP
PHP针对redis常用操作实例详解
2019/08/17 PHP
Thinkphp 框架配置操作之配置加载与读取配置实例分析
2020/05/15 PHP
用javascript实现读取txt文档的脚本
2007/07/20 Javascript
js采用map取到id集合组并且实现点击一行选中一行
2013/12/16 Javascript
json的定义、标准格式及json字符串检验
2014/05/11 Javascript
javascript限制用户只能输汉字中文的方法
2014/11/20 Javascript
AngularJS中的Directive实现延迟加载
2016/01/25 Javascript
JS创建对象几种不同方法详解
2016/03/01 Javascript
bootstrap weebox 支持ajax的模态弹出框
2017/02/23 Javascript
详细介绍RxJS在Angular中的应用
2017/09/23 Javascript
解决Vue 通过下表修改数组,页面不渲染的问题
2018/03/08 Javascript
javascript实现图片轮换动作方法
2020/08/07 Javascript
[46:00]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#4EG VS Fnatic第一局
2016/03/03 DOTA
python3.3教程之模拟百度登陆代码分享
2014/01/16 Python
Python的Django框架中URLconf相关的一些技巧整理
2015/07/18 Python
python实现列表中由数值查到索引的方法
2018/06/27 Python
python:接口间数据传递与调用方法
2018/12/17 Python
图解python全局变量与局部变量相关知识
2019/11/02 Python
Python判断字符串是否为合法标示符操作
2020/09/03 Python
Python基于Webhook实现github自动化部署
2020/11/28 Python
JD Sports德国官网:英国领先的运动鞋和运动服饰零售商
2018/02/26 全球购物
2014社区三八妇女节活动总结
2014/03/01 职场文书
扩大国家免疫规划实施方案
2014/03/21 职场文书
酒店优秀员工事迹材料
2014/06/02 职场文书
公司领导班子四风对照检查材料
2014/09/27 职场文书
教师年终个人总结
2015/02/11 职场文书
八月迷情观后感
2015/06/11 职场文书
宿舍管理制度范本
2015/08/07 职场文书
CSS使用伪类控制边框长度的方法
2022/01/18 HTML / CSS
Windows server 2012搭建FTP服务器
2022/04/29 Servers