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遍历类中所有成员的方法
Mar 18 Python
Python 遍历列表里面序号和值的方法(三种)
Feb 17 Python
Python实现导出数据生成excel报表的方法示例
Jul 12 Python
python先序遍历二叉树问题
Nov 10 Python
详解如何在python中读写和存储matlab的数据文件(*.mat)
Feb 24 Python
TensorFlow实现Softmax回归模型
Mar 09 Python
Python爬虫框架scrapy实现的文件下载功能示例
Aug 04 Python
Pycharm代码无法复制,无法选中删除,无法编辑的解决方法
Oct 22 Python
Python XML转Json之XML2Dict的使用方法
Jan 15 Python
Python 解决OPEN读文件报错 ,路径以及r的问题
Dec 19 Python
如何基于Python创建目录文件夹
Dec 31 Python
Python设计密码强度校验程序
Jul 30 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
laravel创建类似ThinPHP中functions.php的全局函数
2016/11/26 PHP
JS 页面自动加载函数(兼容多浏览器)
2009/05/18 Javascript
Javascript 去除数组的重复元素
2010/05/04 Javascript
jQuery Tools tooltip使用说明
2012/07/14 Javascript
javascript-简单的日历实现及Date对象语法介绍(附图)
2013/05/30 Javascript
利用jQuery简单实现产品展示图片左右滚动功能(示例代码)
2014/01/02 Javascript
轻松创建nodejs服务器(6):作出响应
2014/12/18 NodeJs
JavaScript常用脚本汇总(一)
2015/03/04 Javascript
浅谈js图片前端预览之filereader和window.URL.createObjectURL
2016/06/30 Javascript
浅谈javascript控制HTML5的全屏操控,浏览器兼容的问题
2016/10/10 Javascript
Angular企业级开发——MVC之控制器详解
2017/02/20 Javascript
解决v-for中使用v-if或者v-bind:class失效的问题
2018/09/25 Javascript
Javascript中弹窗confirm与prompt的区别
2018/10/26 Javascript
vue如何根据网站路由判断页面主题色详解
2018/11/02 Javascript
vue中v-show和v-if的异同及v-show用法
2019/06/06 Javascript
微信小程序实现点击效果
2019/06/21 Javascript
urllib2自定义opener详解
2014/02/07 Python
Python单例模式实例分析
2015/01/14 Python
Python中用于检查英文字母大写的isupper()方法
2015/05/19 Python
Python实现简单的用户交互方法详解
2018/09/25 Python
pygame实现俄罗斯方块游戏(基础篇3)
2019/10/29 Python
python线程里哪种模块比较适合
2020/08/02 Python
matplotlib绘制多子图共享鼠标光标的方法示例
2021/01/08 Python
BNKR中国官网:带你感受澳洲领先潮流时尚
2018/08/21 全球购物
名词解释WEB SERVICE,SOAP,UDDI,WSDL,JAXP,JAXM;JSWDL开发包的介绍。
2012/10/27 面试题
道德模范先进事迹
2014/02/14 职场文书
餐饮企业总经理岗位职责范文
2014/02/18 职场文书
安全大检查实施方案
2014/02/22 职场文书
幼儿园课题方案
2014/06/09 职场文书
医院党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
安全隐患整改报告
2014/11/06 职场文书
800字作文之大雪
2019/12/04 职场文书
go语言基础 seek光标位置os包的使用
2021/05/09 Golang
java中用float时,数字后面加f,这样是为什么你知道吗
2021/09/04 Java/Android
Python中字符串对象语法分享
2022/02/24 Python
SpringBoot中使用Redis作为全局锁示例过程
2022/03/24 Java/Android