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 isinstance判断对象类型
Sep 06 Python
python连接MySQL、MongoDB、Redis、memcache等数据库的方法
Nov 15 Python
Python实现的百度站长自动URL提交小工具
Jun 27 Python
python使用原始套接字发送二层包(链路层帧)的方法
Jul 22 Python
解决Python设置函数调用超时,进程卡住的问题
Aug 08 Python
PyTorch的SoftMax交叉熵损失和梯度用法
Jan 15 Python
基于tensorflow指定GPU运行及GPU资源分配的几种方式小结
Feb 03 Python
Pycharm安装并配置jupyter notebook的实现
May 18 Python
浅谈keras 模型用于预测时的注意事项
Jun 27 Python
浅谈keras中Dropout在预测过程中是否仍要起作用
Jul 09 Python
Python中logging日志记录到文件及自动分割的操作代码
Aug 05 Python
k-means & DBSCAN 总结
Apr 27 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做下载文件的实现代码及文件名中乱码解决方法
2011/02/03 PHP
php生成excel列名超过26列大于Z时的解决方法
2014/12/29 PHP
PHP中常用的魔术方法
2017/04/28 PHP
Javascript 兼容firefox的一些问题
2009/05/21 Javascript
JS实现判断滚动条滚到页面底部并执行事件的方法
2014/12/18 Javascript
JavaScript中var关键字的使用详解
2015/08/14 Javascript
Bootstrap Metronic完全响应式管理模板之菜单栏学习笔记
2016/07/08 Javascript
AngularJS入门教程之路由与多视图详解
2016/08/19 Javascript
DOM操作原生js 的bug,使用jQuery 可以消除的解决方法
2016/09/04 Javascript
浅谈Angularjs link和compile的使用区别
2016/10/21 Javascript
jQuery实现三级联动效果
2017/03/02 Javascript
在Vue中使用echarts的方法
2018/02/05 Javascript
详解angular路由高亮之RouterLinkActive
2018/04/28 Javascript
ES6基础之解构赋值(destructuring assignment)
2019/02/21 Javascript
通过实例了解JS 连续赋值
2019/09/24 Javascript
jquery实现简单自动轮播图效果
2020/07/29 jQuery
vue2和vue3的v-if与v-for优先级对比学习
2020/10/10 Javascript
uniapp实现可以左右滑动导航栏
2020/10/21 Javascript
linux环境下的python安装过程图解(含setuptools)
2017/11/22 Python
Python代码实现KNN算法
2017/12/20 Python
python面向对象实现名片管理系统文件版
2019/04/26 Python
解析Python3中的Import
2019/10/13 Python
如何基于python3和Vue实现AES数据加密
2020/03/27 Python
python3通过qq邮箱发送邮件以及附件
2020/05/20 Python
python如何建立全零数组
2020/07/19 Python
任命书怎么写
2014/06/04 职场文书
邓小平理论心得体会
2014/09/09 职场文书
2014机关党员干部“正风肃纪”思想汇报
2014/09/15 职场文书
小区的门卫岗位职责
2014/10/01 职场文书
2015年民主评议党员工作总结
2015/05/19 职场文书
2015年入党积极分子培养考察意见
2015/08/12 职场文书
幼儿园小班教育随笔
2015/08/14 职场文书
2019最新版试用期劳动合同模板!
2019/07/04 职场文书
护士年终工作总结不会写?各科护士模板总结
2020/01/02 职场文书
golang日志包logger的用法详解
2021/05/05 Golang
Python中的 Set 与 dict
2022/03/13 Python