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中stdout输出不缓存的设置方法
May 29 Python
python中while循环语句用法简单实例
May 07 Python
python从入门到精通(DAY 1)
Dec 20 Python
python中import reload __import__的区别详解
Oct 16 Python
Python数据可视化正态分布简单分析及实现代码
Dec 04 Python
python编程嵌套函数实例代码
Feb 11 Python
mac下给python3安装requests库和scrapy库的实例
Jun 13 Python
对python 树状嵌套结构的实现思路详解
Aug 09 Python
Django继承自带user表并重写的例子
Nov 18 Python
python脚本第一行如何写
Aug 30 Python
Python将CSV文件转化为HTML文件的操作方法
Jun 30 Python
解决IDEA翻译插件Translation报错更新TTK失败不能使用
Apr 24 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
一个没有MYSQL数据库支持的简易留言本的编写
2006/10/09 PHP
收藏的一个php小偷的核心程序
2007/04/09 PHP
PHP 冒泡排序算法的实现代码
2010/08/08 PHP
探讨多键值cookie(php中cookie存取数组)的详解
2013/06/06 PHP
PHP连接Access数据库的方法小结
2013/06/20 PHP
PHP中遇到BOM、编码导致json_decode函数无法解析问题
2014/07/02 PHP
php创建session的方法实例详解
2015/01/27 PHP
php、mysql查询当天,查询本周,查询本月的数据实例(字段是时间戳)
2017/02/04 PHP
PHP大文件分块上传功能实例详解
2019/07/22 PHP
解决thinkphp5未定义变量会抛出异常,页面错误,请稍后再试的问题
2019/10/16 PHP
Javascript实现获取窗口的大小和位置代码分享
2014/12/04 Javascript
javascript中数组的定义及使用实例
2015/01/21 Javascript
JS获取表格内指定单元格html内容的方法
2015/03/31 Javascript
JS实现点击按钮控制Div变宽、增高及调整背景色的方法
2015/08/05 Javascript
超详细的javascript数组方法汇总
2015/11/21 Javascript
基于jQuery实现网页打印功能
2015/12/01 Javascript
jQuery通过写入cookie实现更换网页背景的方法
2016/04/15 Javascript
jQuery EasyUI学习教程之datagrid点击列表头排序
2016/07/09 Javascript
js addDqmForPP给标签内属性值加上双引号的函数
2016/12/24 Javascript
微信小程序 form组件详解及简单实例
2017/01/10 Javascript
vue-router:嵌套路由的使用方法
2017/02/21 Javascript
JavaScript运动框架 链式运动到完美运动(五)
2017/05/18 Javascript
JavaScript 获取元素在父节点中的下标(推荐)
2017/06/28 Javascript
详细介绍RxJS在Angular中的应用
2017/09/23 Javascript
微信小程序MUI导航栏透明渐变功能示例(通过改变opacity实现)
2019/01/24 Javascript
vue 兄弟组件的信息传递的方法实例详解
2019/08/30 Javascript
原生javascript单例模式的应用实例分析
2020/02/23 Javascript
python中threading超线程用法实例分析
2015/05/16 Python
Python制作钉钉加密/解密工具
2016/12/07 Python
浅谈pandas中Dataframe的查询方法([], loc, iloc, at, iat, ix)
2018/04/10 Python
Python 绘图库 Matplotlib 入门教程
2018/04/19 Python
使用PyQt5实现图片查看器的示例代码
2020/04/21 Python
董事长岗位职责
2013/11/30 职场文书
2015年小学语文教学工作总结
2015/05/25 职场文书
彻底解决MySQL使用中文乱码的方法
2022/01/22 MySQL
无线电知识基础入门篇
2022/02/18 无线电