Python OpenCV调用摄像头检测人脸并截图


Posted in Python onAugust 20, 2020

本文实例为大家分享了Python OpenCV调用摄像头检测人脸并截图的具体代码,供大家参考,具体内容如下

注意:需要在python中安装OpenCV库,同时需要下载OpenCV人脸识别模型haarcascade_frontalface_alt.xml,模型可在OpenCV-PCA-KNN-SVM_face_recognition中下载。

使用OpenCV调用摄像头检测人脸并连续截图100张

#-*- coding: utf-8 -*-
# import 进openCV的库
import cv2

###调用电脑摄像头检测人脸并截图

def CatchPICFromVideo(window_name, camera_idx, catch_pic_num, path_name):
 cv2.namedWindow(window_name)

 #视频来源,可以来自一段已存好的视频,也可以直接来自USB摄像头
 cap = cv2.VideoCapture(camera_idx)

 #告诉OpenCV使用人脸识别分类器
 classfier = cv2.CascadeClassifier("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张图像,存进image文件夹中
 CatchPICFromVideo("get face", 0, 99, "/image")

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
pycharm 使用心得(六)进行简单的数据库管理
Jun 06 Python
Python中用pycurl监控http响应时间脚本分享
Feb 02 Python
关于反爬虫的一些简单总结
Dec 13 Python
使用python生成目录树
Mar 29 Python
解决Ubuntu pip 安装 mysql-python包出错的问题
Jun 11 Python
python实现内存监控系统
Mar 07 Python
pyqt5实现按钮添加背景图片以及背景图片的切换方法
Jun 13 Python
Python任务自动化工具tox使用教程
Mar 17 Python
Python unittest框架操作实例解析
Apr 13 Python
Python稀疏矩阵及参数保存代码实现
Apr 18 Python
python中return如何写
Jun 18 Python
Python 绘制多因子柱状图
May 11 Python
使用PYTHON解析Wireshark的PCAP文件方法
Jul 23 #Python
Django 静态文件配置过程详解
Jul 23 #Python
python 设置xlabel,ylabel 坐标轴字体大小,字体类型
Jul 23 #Python
pandas通过字典生成dataframe的方法步骤
Jul 23 #Python
Python基于OpenCV实现人脸检测并保存
Jul 23 #Python
python 读取修改pcap包的例子
Jul 23 #Python
Django 用户认证组件使用详解
Jul 23 #Python
You might like
php注入实例
2006/10/09 PHP
php中显示数组与对象的实现代码
2011/04/18 PHP
一些php项目中比较通用的php自建函数的详解
2013/06/06 PHP
zf框架db类的分页示例分享
2014/03/14 PHP
php数组添加元素方法小结
2014/12/20 PHP
PHP页面间传递值和保持值的方法
2016/08/24 PHP
Extjs中常用表单介绍与应用
2010/06/07 Javascript
Javascript中 关于prototype属性实现继承的原理图
2013/04/16 Javascript
新增加的内容是如何将div的scrollbar自动移动最下面
2014/01/02 Javascript
浅谈JavaScript function函数种类
2014/12/29 Javascript
jQuery解析XML与传统JavaScript方法的差别实例分析
2015/03/05 Javascript
JavaScript中实现Map的示例代码
2015/09/09 Javascript
Bootstrap导航栏各元素操作方法(表单、按钮、文本)
2015/12/28 Javascript
AngularJS入门示例之Hello World详解
2017/01/04 Javascript
JS调用Android、Ios原生控件
2017/01/06 Javascript
安装vue-cli的简易过程
2018/05/22 Javascript
解决vue移动端适配问题
2018/12/12 Javascript
javascript实现前端input密码输入强度验证
2020/06/24 Javascript
vue3为什么要用proxy替代defineProperty
2020/10/19 Javascript
vue实现下拉菜单树
2020/10/22 Javascript
详解Vite的新体验
2021/02/22 Javascript
Python 匹配任意字符(包括换行符)的正则表达式写法
2009/10/29 Python
用Python编写一个国际象棋AI程序
2014/11/28 Python
Python的Django框架中模板碎片缓存简介
2015/07/24 Python
解决python删除文件的权限错误问题
2018/04/24 Python
python3解析库pyquery的深入讲解
2018/06/26 Python
python pycharm的安装及其使用
2019/10/11 Python
python 实现两个npy档案合并
2020/07/01 Python
python 实现音频叠加的示例
2020/10/29 Python
CSS3中的元素过渡属性transition示例详解
2016/11/30 HTML / CSS
会计电算化专业毕业生自荐信
2013/12/20 职场文书
励志演讲稿500字
2014/08/21 职场文书
简单的辞职信范文(2016最新版)
2015/05/12 职场文书
2016五四青年节活动总结范文
2016/04/06 职场文书
Java 多线程并发FutureTask
2022/06/28 Java/Android
MySQL自定义函数及触发器
2022/08/05 MySQL