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 链接和操作 memcache方法
Mar 04 Python
Mac 上切换Python多版本
Jun 17 Python
详解Python发送email的三种方式
Oct 18 Python
基于腾讯云服务器部署微信小程序后台服务(Python+Django)
May 08 Python
Python Django框架模板渲染功能示例
Nov 08 Python
python 画函数曲线示例
Dec 04 Python
Python3 全自动更新已安装的模块实现
Jan 06 Python
关于torch.optim的灵活使用详解(包括重写SGD,加上L1正则)
Feb 20 Python
浅谈matplotlib.pyplot与axes的关系
Mar 06 Python
jupyter notebook 添加kernel permission denied的操作
Apr 21 Python
快速了解Python开发环境Spyder
Jun 29 Python
Python编程根据字典列表相同键的值进行合并
Oct 05 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
声音就能俘获人心,蕾姆,是哪个漂亮小姐姐配音呢?
2020/03/03 日漫
php项目打包方法
2008/02/18 PHP
PHP测试程序运行时间的类
2012/02/05 PHP
基于ThinkPHP实现批量删除
2015/12/18 PHP
php实现评论回复删除功能
2017/05/23 PHP
javascript使用定时函数实现跳转到某个页面
2013/12/25 Javascript
jquery ajax传递中文参数乱码问题及解决方法说明
2014/02/07 Javascript
JavaScript动态改变HTML页面元素例如添加或删除
2014/08/10 Javascript
JavaScript检测实例属性, 原型属性
2015/02/04 Javascript
js获取当前年月日-YYYYmmDD格式的实现代码
2016/06/01 Javascript
详解Angular的内置过滤器和自定义过滤器【推荐】
2016/12/26 Javascript
jQuery操作json常用方法示例
2017/01/04 Javascript
JavaScript禁止微信浏览器下拉回弹效果
2017/05/16 Javascript
form表单序列化详解(推荐)
2017/08/15 Javascript
利用vue组件自定义v-model实现一个Tab组件方法示例
2017/12/06 Javascript
Node.js Koa2使用JWT进行鉴权的方法示例
2018/08/17 Javascript
Vue-Cli项目优化操作的实现
2019/10/27 Javascript
Python获取文件ssdeep值的方法
2014/10/05 Python
利用Python画ROC曲线和AUC值计算
2016/09/19 Python
Python中生成Epoch的方法
2017/04/26 Python
分析python动态规划的递归、非递归实现
2018/03/04 Python
pandas值替换方法
2018/07/10 Python
在Pycharm中对代码进行注释和缩进的方法详解
2019/01/20 Python
pandas的相关系数与协方差实例
2019/12/27 Python
Python文件夹批处理操作代码实例
2020/07/21 Python
css图标制作教程制作云图标
2014/01/19 HTML / CSS
Html5原生拖拽相关事件简介以及基础实现
2020/11/19 HTML / CSS
美国马匹用品和骑马配件购物网站:Horse.com
2018/01/08 全球购物
销售业务实习自我鉴定
2013/09/23 职场文书
挖掘机司机岗位职责
2014/02/12 职场文书
拔河比赛口号
2014/06/10 职场文书
图书室标语
2014/06/21 职场文书
生产工厂门卫岗位职责
2014/09/26 职场文书
继承公证书格式
2015/01/26 职场文书
2015年乡镇发展党员工作总结
2015/03/31 职场文书
Python源码解析之List
2021/05/21 Python