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基于PycURL实现POST的方法
Jul 25 Python
详解Python中heapq模块的用法
Jun 28 Python
不要用强制方法杀掉python线程
Feb 26 Python
使用pygame模块编写贪吃蛇的实例讲解
Feb 05 Python
python3实现钉钉消息推送的方法示例
Mar 14 Python
Pytorch 多块GPU的使用详解
Dec 31 Python
Python3中的f-Strings增强版字符串格式化方法
Mar 04 Python
配置python的编程环境之Anaconda + VSCode的教程
Mar 29 Python
Python+redis通过限流保护高并发系统
Apr 15 Python
基于Python实现2种反转链表方法代码实例
Jul 06 Python
Python学习之time模块的基本使用
Jan 17 Python
判断Python中的Nonetype类型
May 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自定义函数格式化json数据示例
2016/09/14 PHP
Laravel 5.4.36中session没有保存成功问题的解决
2018/02/19 PHP
Yii框架页面渲染操作实例详解
2019/07/19 PHP
解决jquery .ajax 在IE下卡死问题的解决方法
2009/10/26 Javascript
jquery.validate使用攻略 第五步 正则验证
2010/07/01 Javascript
Ext对基本类型的扩展 ext,extjs,format
2010/12/25 Javascript
jQuery控制iFrame(实例代码)
2013/11/19 Javascript
同域jQuery(跨)iframe操作DOM(示例代码)
2013/12/13 Javascript
控制input输入框中提示信息的显示和隐藏的方法
2014/02/12 Javascript
浅谈javascript中for in 和 for each in的区别
2015/04/23 Javascript
jQuery简单实现仿京东商城的左侧菜单效果代码
2015/09/09 Javascript
详解jQuery中ajax.load()方法
2017/01/25 Javascript
Bootstrap滚动监听组件scrollspy.js使用方法详解
2017/07/20 Javascript
浅谈vue的踩坑路
2017/08/31 Javascript
微信小程序-getUserInfo回调的实例详解
2017/10/27 Javascript
JavaScript实现仿Clock ISO时钟
2018/06/29 Javascript
Vue递归实现树形菜单方法实例
2018/11/06 Javascript
详解element-ui中form验证杂记
2019/03/04 Javascript
javascript设计模式 ? 命令模式原理与用法实例分析
2020/04/20 Javascript
Vue中computed及watch区别实例解析
2020/08/01 Javascript
python 字符串格式化代码
2013/03/17 Python
Python cookbook(数据结构与算法)从任意长度的可迭代对象中分解元素操作示例
2018/02/13 Python
python批量修改文件编码格式的方法
2018/05/31 Python
CSS3只让背景图片旋转180度的实现示例
2021/03/09 HTML / CSS
英国儿童图书网站:Scholastic
2017/03/26 全球购物
德购商城:德国进口直邮商城
2017/06/13 全球购物
洛杉矶生活休闲而精致的基础品牌:Mika Jaymes
2018/01/07 全球购物
美国杰西潘尼官网:JCPenney
2019/06/12 全球购物
个人简历自我评价八例
2013/10/31 职场文书
煤矿安全生产责任书
2014/04/15 职场文书
岗位标兵事迹材料
2014/05/17 职场文书
收入及婚姻状况证明
2014/11/20 职场文书
个人道歉信大全
2019/04/11 职场文书
Nginx 路由转发和反向代理location配置实现
2021/11/11 Servers
Python+Tkinter打造签名设计工具
2022/04/01 Python
windows server 2012安装FTP并配置被动模式指定开放端口
2022/06/10 Servers