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 BeautifulSoup使用方法详解
Nov 21 Python
Django框架的中的setting.py文件说明详解
Oct 15 Python
pyqt5中QThread在使用时出现重复emit的实例
Jun 21 Python
Python 元组拆包示例(Tuple Unpacking)
Dec 24 Python
tensorflow多维张量计算实例
Feb 11 Python
Python实现获取当前目录下文件名代码详解
Mar 10 Python
python中shell执行知识点
May 06 Python
python的reverse函数翻转结果为None的问题
May 11 Python
Django中ORM找出内容不为空的数据实例
May 20 Python
python实现启动一个外部程序,并且不阻塞当前进程
Dec 05 Python
详解Python中@staticmethod和@classmethod区别及使用示例代码
Dec 14 Python
python Pexpect模块的使用
Dec 25 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下实现伪 url 的超简单方法[转]
2007/09/24 PHP
PHP数组操作汇总 php数组的使用技巧
2011/07/17 PHP
php版阿里云OSS图片上传类详解
2016/12/01 PHP
关于JavaScript与HTML的交互事件
2013/04/12 Javascript
jQuery实现密保互斥问题解决方案
2013/08/16 Javascript
深入领悟JavaScript中的面向对象
2013/11/18 Javascript
js打开新窗口方法整理
2014/02/17 Javascript
JS简单操作select和dropdownlist实例
2014/11/26 Javascript
javascript实现点击提交按钮后显示loading的方法
2015/07/03 Javascript
js实现带缓冲效果的仿QQ面板折叠菜单代码
2015/09/06 Javascript
Atitit.js的键盘按键事件捆绑and事件调度
2016/04/01 Javascript
bootstrap datepicker限定可选时间范围实现方法
2016/09/28 Javascript
微信小程序开发探究
2016/12/27 Javascript
JS解析url查询参数的简单代码
2017/08/06 Javascript
关于HTTP传输中gzip压缩的秘密探索分析
2018/01/12 Javascript
vue超时计算的组件实例代码
2018/07/09 Javascript
JavaScript中展开运算符及应用的实例代码
2021/01/14 Javascript
[03:03]DOTA2校园争霸赛 济南城市决赛欢乐发奖活动
2013/10/21 DOTA
Django实现图片文字同时提交的方法
2015/05/26 Python
简介Python的collections模块中defaultdict类型的用法
2016/07/07 Python
Python cookbook(数据结构与算法)在字典中将键映射到多个值上的方法
2018/02/18 Python
Python高级用法总结
2018/05/26 Python
Pycharm 创建 Django admin 用户名和密码的实例
2018/05/30 Python
python3 实现一行输入,空格隔开的示例
2018/11/14 Python
Python自定义一个类实现字典dict功能的方法
2019/01/19 Python
Python检测数据类型的方法总结
2019/05/20 Python
Html5导航栏吸顶方案原理与对比实现
2020/06/10 HTML / CSS
美体小铺法国官方网站:The Body Shop法国
2020/06/04 全球购物
服装设计专业自荐书范文
2013/12/30 职场文书
物理系毕业生自荐书范文
2014/02/22 职场文书
政府绩效管理实施方案
2014/05/04 职场文书
学校综治宣传月活动总结
2014/07/02 职场文书
2016年社区党支部公开承诺书
2016/03/25 职场文书
golang 实现时间戳和时间的转化
2021/05/07 Golang
浅谈Python数学建模之数据导入
2021/06/23 Python
Vue.js中v-bind指令的用法介绍
2022/03/13 Vue.js