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 相关文章推荐
python实现系统状态监测和故障转移实例方法
Nov 18 Python
Python之reload流程实例代码解析
Jan 29 Python
python 字符串只保留汉字的方法
Nov 16 Python
python实现指定ip端口扫描方式
Dec 17 Python
Python 3 使用Pillow生成漂亮的分形树图片
Dec 24 Python
Python 从attribute到property详解
Mar 05 Python
python matplotlib imshow热图坐标替换/映射实例
Mar 14 Python
python异常处理、自定义异常、断言原理与用法分析
Mar 23 Python
Python PyQt5整理介绍
Apr 01 Python
scrapy-splash简单使用详解
Feb 21 Python
python实现调用摄像头并拍照发邮箱
Apr 27 Python
pytorch分类模型绘制混淆矩阵以及可视化详解
Apr 07 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下操作Linux消息队列完成进程间通信的方法
2010/07/24 PHP
PHP 代码规范小结
2012/03/08 PHP
Windows下编译PHP5.4和xdebug全记录
2015/04/03 PHP
php基于Snoopy解析网页html的方法
2015/07/09 PHP
微信公众号支付之坑:调用支付jsapi缺少参数 timeStamp等错误解决方法
2016/01/12 PHP
js 字符串操作函数
2009/07/25 Javascript
关于flash遮盖div浮动层的解决方法
2010/07/17 Javascript
jQuery UI Autocomplete 体验分享
2012/02/14 Javascript
JQuery表单验证插件EasyValidator用法分析
2014/11/15 Javascript
如何屏蔽防止别的网站嵌入框架代码
2015/08/24 Javascript
jquery+css实现动感的图片切换效果
2015/11/25 Javascript
学习javascript面向对象 掌握创建对象的9种方式
2016/01/04 Javascript
jQuery中show与hide方法用法示例
2016/09/16 Javascript
详解JavaScript常量定义
2017/01/03 Javascript
JS实现简单短信验证码界面
2017/08/07 Javascript
Node.js自定义实现文件路由功能
2017/09/22 Javascript
javaScript中的空值和假值
2017/12/18 Javascript
Angular angular-file-upload文件上传的示例代码
2018/08/23 Javascript
详解vue 图片上传功能
2019/04/30 Javascript
[45:18]完美世界DOTA2联赛循环赛 PXG vs IO 第二场 11.06
2020/11/09 DOTA
Python操作Mysql实例代码教程在线版(查询手册)
2013/02/18 Python
基于python实现微信模板消息
2015/12/21 Python
全面分析Python的优点和缺点
2018/02/07 Python
python多行字符串拼接使用小括号的方法
2020/03/19 Python
Python3.0中普通方法、类方法和静态方法的比较
2019/05/03 Python
利用anaconda作为python的依赖库管理方法
2019/08/13 Python
pytorch cuda上tensor的定义 以及减少cpu的操作详解
2020/06/23 Python
PyTorch预训练Bert模型的示例
2020/11/17 Python
Python 中Operator模块的使用
2021/01/30 Python
利用异或运算实现两个无符号数的加法运算
2013/12/20 面试题
2014年教师政治学习材料
2014/06/02 职场文书
高中生期中考试失利检讨书
2014/10/23 职场文书
社区党支部公开承诺书
2015/04/29 职场文书
2016新党章学习心得体会
2016/01/15 职场文书
SONY AN-LP1 短波有源天线放大器
2021/04/22 无线电
vue使用wavesurfer.js解决音频可视化播放问题
2022/04/04 Vue.js