Python基于OpenCV实现人脸检测并保存


Posted in Python onJuly 23, 2019

本文实例为大家分享了Python基于OpenCV实现人脸检测,并保存的具体代码,供大家参考,具体内容如下

安装opencv

如果安装了pip的话,Opencv的在windows的安装可以直接通过cmd命令pip install opencv-python(只需要主要模块),也可以输入命令pip install opencv-contrib-python(如果需要main模块和contrib模块)
详情可以点击此处

导入opencv

import cv2

所有包都包含haarcascade文件。这个文件很重要!!!
cv2.data.haarcascades可以用作数据文件夹的快捷方式。例如:

cv2.CascadeClassifier(cv2.data.haarcascades + "haarcascade_frontalface_default.xml")

代码

#-*- coding: utf-8 -*-
# import openCV的库
import cv2
import os, math, operator
from PIL import Image
from functools import reduce


###调用电脑摄像头检测人脸并截图

def CatchPICFromVideo(window_name, path_name):
 cv2.namedWindow(window_name)

 #电脑摄像头
 cap = cv2.VideoCapture(0)

 #告诉OpenCV使用人脸识别分类器
 classfier = cv2.CascadeClassifier(cv2.data.haarcascades + "haarcascade_frontalface_default.xml")

 #检测人脸后要画的边框的颜色
 color = (0, 255, 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

   #画出矩形框
  cv2.rectangle(frame, (x - 10, y - 10), (x + w + 10, y + h + 10), color, 2)
  
  k = cv2.waitKey(100) #每0.1秒读一次键盘
  if k == ord("z") or k == ord("Z"): #如果输入z
   #将当前帧保存为图片
   img_name = path_name
   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])
   break 
   
 #显示图像
 cv2.imshow(window_name, frame)
 #退出摄像头界面
 c = cv2.waitKey(100)
 if c == ord("q") or c == ord("Q"): 
  break

 #释放摄像头并销毁所有窗口
 cap.release()
 cv2.destroyAllWindows()


os.system("cls") #清屏
recogname = "recogface.jpg" #预存的人脸文件
CatchPICFromVideo("get face",recogname)

功能:

虽然能框住人脸,但是效率还不是很高。
按Z或z可以将框住的人脸截取保存

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python解析xml文件实例分享
Dec 04 Python
Python基于动态规划算法计算单词距离
Jul 25 Python
Ubuntu安装Jupyter Notebook教程
Oct 18 Python
python requests post多层字典的方法
Dec 27 Python
Flask框架学习笔记之消息提示与异常处理操作详解
Aug 15 Python
Python3显示当前时间、计算时间差及时间加减法示例代码
Sep 07 Python
Python之Numpy的超实用基础详细教程
Oct 23 Python
Python内置类型性能分析过程实例
Jan 29 Python
基于python实现可视化生成二维码工具
Jul 08 Python
Python基于百度API识别并提取图片中文字
Jun 27 Python
python基础之文件操作
Oct 24 Python
使用Python获取字典键对应值的方法
Apr 26 Python
python 读取修改pcap包的例子
Jul 23 #Python
Django 用户认证组件使用详解
Jul 23 #Python
pandas DataFrame 警告(SettingWithCopyWarning)的解决
Jul 23 #Python
利用Python库Scapy解析pcap文件的方法
Jul 23 #Python
python3.x提取中文的正则表达式示例代码
Jul 23 #Python
Python Pandas 箱线图的实现
Jul 23 #Python
Django 开发调试工具 Django-debug-toolbar使用详解
Jul 23 #Python
You might like
咖啡豆要不要放冰箱的原因
2021/03/04 冲泡冲煮
桌面中心(二)数据库写入
2006/10/09 PHP
PHP计数器的实现代码
2013/06/08 PHP
Smarty模板变量调节器用法分析
2016/05/23 PHP
Laravel框架Request、Response及Session操作示例
2019/05/06 PHP
js获取浏览器的可视区域尺寸的实现代码
2011/11/30 Javascript
通过JS获取用户本地图片路径并显示的代码
2012/02/16 Javascript
PHP使用方法重载实现动态创建属性的get和set方法
2014/11/17 Javascript
每天一篇javascript学习小结(面向对象编程)
2015/11/20 Javascript
探讨JavaScript语句的执行过程
2016/01/28 Javascript
javascript简单实现跟随滚动条漂浮的返回顶部按钮效果
2016/08/19 Javascript
js中删除数组中的某一元素实例(无下标时)
2017/02/28 Javascript
js学使用setTimeout实现轮循动画
2017/07/17 Javascript
解决vue组件中使用v-for出现告警问题及v for指令介绍
2017/11/11 Javascript
vue实现组件之间传值功能示例
2018/07/13 Javascript
js删除指定位置超链接中含有百度与360的标题
2021/01/06 Javascript
Vue中使用wangeditor富文本编辑的问题
2021/02/07 Vue.js
浅谈Python程序与C++程序的联合使用
2015/04/07 Python
使用Python的Flask框架表单插件Flask-WTF实现Web登录验证
2016/07/12 Python
浅析python的优势和不足之处
2018/11/20 Python
Python中fnmatch模块的使用详情
2018/11/30 Python
python+logging+yaml实现日志分割
2019/07/22 Python
python 监测内存和cpu的使用率实例
2019/11/28 Python
如何基于Python实现电子邮件的发送
2019/12/16 Python
python图形开发GUI库pyqt5的详细使用方法及各控件的属性与方法
2020/02/14 Python
html5生成柱状图(条形图)效果的实例代码
2016/03/25 HTML / CSS
adidas美国官网:adidas US
2016/09/21 全球购物
英国珠宝和手表专家:Pleasance & Harper
2020/10/21 全球购物
命名空间(namespace)和程序集(Assembly)有什么区别
2015/09/25 面试题
毕业生求职找工作的自我评价范文
2013/11/27 职场文书
打架检讨书100字
2014/01/19 职场文书
普通党员整改措施
2014/10/24 职场文书
MySQL创建定时任务
2022/01/22 MySQL
SQL Server数据库备份和恢复数据库的全过程
2022/06/14 SQL Server
react中useState使用:如何实现在当前表格直接更改数据
2022/08/05 Javascript
Redis主从复制操作和配置详情
2022/09/23 Redis