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 文件与目录操作
Dec 24 Python
python线程池的实现实例
Nov 18 Python
Python获取服务器信息的最简单实现方法
Mar 05 Python
用Python中的字典来处理索引统计的方法
May 05 Python
浅谈python字典多键值及重复键值的使用
Nov 04 Python
Python如何读取MySQL数据库表数据
Mar 11 Python
简单谈谈Python中的元祖(Tuple)和字典(Dict)
Apr 21 Python
Python使用微信SDK实现的微信支付功能示例
Jun 30 Python
Python实现的选择排序算法示例
Nov 29 Python
Django 简单实现分页与搜索功能的示例代码
Nov 07 Python
Python 分布式缓存之Reids数据类型操作详解
Jun 24 Python
python给视频添加背景音乐并改变音量的具体方法
Jul 19 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
PHP中HTML标签过滤技巧
2014/01/07 PHP
php实现与python进行socket通信的方法示例
2017/08/30 PHP
Laravel框架路由管理简单示例
2019/05/07 PHP
使用composer安装使用thinkphp6.0框架问题【视频教程】
2019/10/01 PHP
laravel请求参数校验方法
2019/10/10 PHP
javascript实现上传图片前的预览(TX的面试题)
2007/08/20 Javascript
jquery实现居中弹出层代码
2010/08/25 Javascript
javascript判断并获取注册表中可信任站点的方法
2015/06/01 Javascript
JavaScript浏览器对象之一Window对象详解
2016/06/03 Javascript
由浅入深剖析Angular表单验证
2016/07/14 Javascript
详解jquery选择器的原理
2017/08/01 jQuery
聊聊那些使用前端Javascript实现的机器学习类库
2017/09/18 Javascript
React Router V4使用指南(精讲)
2018/09/17 Javascript
详解在Node.js中发起HTTP请求的5种方法
2019/01/10 Javascript
浅析JavaScript异步代码优化
2019/03/18 Javascript
[02:04]2014DOTA2国际邀请赛 BBC小组赛第三天总结
2014/07/12 DOTA
使用Python编写简单网络爬虫抓取视频下载资源
2014/11/04 Python
django+js+ajax实现刷新页面的方法
2017/05/22 Python
python绘制双柱形图代码实例
2017/12/14 Python
python解析html提取数据,并生成word文档实例解析
2018/01/22 Python
python将三维数组展开成二维数组的实现
2019/11/30 Python
python3 实现口罩抽签的功能
2020/03/11 Python
python 已知三条边求三角形的角度案例
2020/04/12 Python
python 偷懒技巧——使用 keyboard 录制键盘事件
2020/09/21 Python
英语商务邀请函范文
2014/01/16 职场文书
乡村文明行动实施方案
2014/03/29 职场文书
移风易俗倡议书
2014/04/15 职场文书
学校领导班子群众路线整改措施
2014/09/16 职场文书
自我查摆剖析材料
2014/10/11 职场文书
小学美术教学反思
2016/02/17 职场文书
PyQt5 QThread倒计时功能的实现代码
2021/04/02 Python
mybatis中注解与xml配置的对应关系和对比分析
2021/08/04 Java/Android
SpringCloud之@FeignClient()注解的使用方式
2021/09/25 Java/Android
Python 数据可视化之Seaborn详解
2021/11/02 Python
js前端图片加载异常兜底方案
2022/06/21 Javascript
SQLServer常见数学函数梳理总结
2022/08/05 MySQL