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 UnboundLocalError和NameError错误根源案例解析
Oct 31 Python
python opencv实现图像边缘检测
Apr 29 Python
Python函数参数匹配模型通用规则keyword-only参数详解
Jun 10 Python
利用python开发app实战的方法
Jul 09 Python
python函数修饰符@的使用方法解析
Sep 02 Python
双向RNN:bidirectional_dynamic_rnn()函数的使用详解
Jan 20 Python
Pytest参数化parametrize使用代码实例
Feb 22 Python
keras slice layer 层实现方式
Jun 11 Python
利用Pycharm + Django搭建一个简单Python Web项目的步骤
Oct 22 Python
python反爬虫方法的优缺点分析
Nov 25 Python
基于Django快速集成Echarts代码示例
Dec 01 Python
Python-OpenCV实现图像缺陷检测的实例
Jun 11 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
Twig模板引擎用法入门教程
2016/01/20 PHP
php实现文件上传及头像预览功能
2017/01/15 PHP
为你的 Laravel 验证器加上多验证场景的实现
2020/04/07 PHP
PHP快速导出百万级数据到CSV或者EXCEL文件
2020/11/27 PHP
JavaScript高级程序设计 扩展--关于动态原型
2010/11/09 Javascript
js作用域及作用域链概念理解及使用
2013/04/15 Javascript
快速查找数组中的某个元素并返回下标示例
2013/09/03 Javascript
js使用Array.prototype.sort()对数组对象排序的方法
2015/01/28 Javascript
使用snowfall.jquery.js实现爱心满屏飞的效果
2017/01/05 Javascript
vue 自定义组件 v-model双向绑定、 父子组件同步通信的多种写法
2017/11/27 Javascript
vue进行图片的预加载watch用法实例讲解
2018/02/07 Javascript
Vue绑定内联样式问题
2018/10/17 Javascript
用node开发并发布一个cli工具的方法步骤
2019/01/03 Javascript
node.js命令行教程图文详解
2019/05/27 Javascript
redux处理异步action解决方案
2020/03/22 Javascript
Vue切换组件实现返回后不重置数据,保留历史设置操作
2020/07/21 Javascript
如何使用JS console.log()技巧提高工作效率
2020/10/14 Javascript
[46:20]CHAOS vs Alliacne 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
从零学Python之hello world
2014/05/21 Python
python flask中静态文件的管理方法
2018/03/20 Python
Python读取txt某几列绘图的方法
2018/10/14 Python
python 求1-100之间的奇数或者偶数之和的实例
2019/06/11 Python
python中selenium操作下拉滚动条的几种方法汇总
2019/07/14 Python
wxpython多线程防假死与线程间传递消息实例详解
2019/12/13 Python
基于python及pytorch中乘法的使用详解
2019/12/27 Python
基于python requests selenium爬取excel vba过程解析
2020/08/12 Python
一文带你了解Python 四种常见基础爬虫方法介绍
2020/12/04 Python
什么是组件架构
2016/05/15 面试题
实习教师个人的自我评价
2013/11/08 职场文书
美术专业个人自我评价
2014/01/18 职场文书
高中生军训感言
2015/08/01 职场文书
学习型家庭事迹材料(2016精选版)
2016/02/29 职场文书
Nginx服务器如何设置url链接
2021/03/31 Servers
如何使用PyCharm及常用配置详解
2021/06/03 Python
php实例化对象的实例方法
2021/11/17 PHP
Nginx本地配置SSL访问的实例教程
2022/05/30 Servers