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易忽视知识点小结
May 25 Python
最大K个数问题的Python版解法总结
Jun 16 Python
Flask框架的学习指南之开发环境搭建
Nov 20 Python
Django的分页器实例(paginator)
Dec 01 Python
Python实现PS图像抽象画风效果的方法
Jan 23 Python
利用Python代码实现数据可视化的5种方法详解
Mar 25 Python
详解TensorFlow查看ckpt中变量的几种方法
Jun 19 Python
在Pycharm中设置默认自动换行的方法
Jan 16 Python
Python笔试面试题小结
Sep 07 Python
python实现广度优先搜索过程解析
Oct 19 Python
Django框架静态文件处理、中间件、上传文件操作实例详解
Feb 29 Python
使用IPython或Spyder将省略号表示的内容完整输出
Apr 20 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 Cookie的一个使用注意点
2008/11/08 PHP
php加水印的代码(支持半透明透明打水印,支持png透明背景)
2013/01/17 PHP
使用淘宝IP库获取用户ip地理位置
2013/10/27 PHP
php实现文件下载(支持中文文名)
2013/12/04 PHP
PHP小偷程序的设计与实现方法详解
2016/10/15 PHP
PHP利用curl发送HTTP请求的实例代码
2020/07/09 PHP
html5 canvas js(数字时钟)实例代码
2013/12/23 Javascript
JS脚本defer的作用示例介绍
2014/01/02 Javascript
Js制作点击输入框时默认文字消失的效果
2015/09/05 Javascript
jQuery插件EasyUI获取当前Tab中iframe窗体对象的方法
2016/08/05 Javascript
jQuery元素属性操作实例(设置、获取及删除元素属性)
2016/09/08 Javascript
jQuery实现倒计时(倒计时年月日可自己输入)
2016/12/02 Javascript
bootstrap table实例详解
2017/01/06 Javascript
jQuery DOM节点的遍历方法小结
2017/08/15 jQuery
JavaScript面试技巧之数组的一些不low操作
2019/03/22 Javascript
详解Vue组件之间通信的七种方式
2019/04/14 Javascript
jQuery与原生JavaScript选择HTML元素集合用法对比分析
2019/11/26 jQuery
vue 点击其他区域关闭自定义div操作
2020/07/17 Javascript
在SAE上部署Python的Django框架的一些问题汇总
2015/05/30 Python
浅谈python迭代器
2017/11/08 Python
python模拟键盘输入 切换键盘布局过程解析
2019/08/15 Python
学会python自动收发邮件 代替你问候女友
2020/05/20 Python
英国领先的体验日提供商:Buyagift
2019/04/19 全球购物
德国高尔夫商店:Golfshop.de
2019/06/22 全球购物
Linux管理员面试题 Linux admin interview questions
2014/11/01 面试题
2014乡镇干部纪律作风整顿思想汇报
2014/09/13 职场文书
学习与创新自我评价
2015/03/09 职场文书
志愿者服务活动总结报告
2015/05/06 职场文书
大学运动会通讯稿
2015/07/18 职场文书
导游词之贵州百里杜鹃
2019/10/29 职场文书
Java 数组内置函数toArray详解
2021/06/28 Java/Android
python编程项目中线上问题排查与解决
2021/11/01 Python
Go语言基础切片的创建及初始化示例详解
2021/11/17 Golang
MySQL数据库⾼可⽤HA实现小结
2022/01/22 MySQL
Python学习之时间包使用教程详解
2022/03/21 Python
Python中npy和mat文件的保存与读取
2022/04/24 Python