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的加密模块md5、sha、crypt使用实例
Sep 28 Python
Python基于twisted实现简单的web服务器
Sep 29 Python
python中pycurl库的用法实例
Sep 30 Python
尝试使用Python多线程抓取代理服务器IP地址的示例
Nov 09 Python
python检测空间储存剩余大小和指定文件夹内存占用的实例
Jun 11 Python
python opencv实现旋转矩形框裁减功能
Jul 25 Python
对pandas的算术运算和数据对齐实例详解
Dec 22 Python
python3使用flask编写注册post接口的方法
Dec 28 Python
python实现证件照换底功能
Aug 20 Python
Python unittest单元测试框架实现参数化
Apr 29 Python
Python操控mysql批量插入数据的实现方法
Oct 27 Python
python爬虫中PhantomJS加载页面的实例方法
Nov 12 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
如何对PHP程序中的常见漏洞进行攻击(上)
2006/10/09 PHP
简单PHP上传图片、删除图片实现代码
2010/05/12 PHP
无法在发生错误时创建会话,请检查 PHP 或网站服务器日志,并正确配置 PHP 安装最快的解决办法
2010/08/01 PHP
php使用websocket示例详解
2014/03/12 PHP
Session的工作机制详解和安全性问题(PHP实例讲解)
2014/04/10 PHP
php常用数组array函数实例总结【赋值,拆分,合并,计算,添加,删除,查询,判断,排序】
2016/12/07 PHP
JavaScript中的isXX系列是否继续使用的分析
2011/04/16 Javascript
JQuery 操作/获取table具体代码
2013/06/13 Javascript
JS+CSS实现可以凹陷显示选中单元格的方法
2015/03/02 Javascript
JavaScript观察者模式(经典)
2015/12/09 Javascript
Ionic快速安装教程
2016/06/03 Javascript
node.js-v6新版安装具体步骤(分享)
2017/09/06 Javascript
JavaScript实现打印星型金字塔功能实例分析
2017/09/27 Javascript
js 两个日期比较相差多少天的实例
2017/10/19 Javascript
脚手架vue-cli工程webpack的作用和特点
2018/09/29 Javascript
Bootstrap4 gulp 配置详解
2019/01/06 Javascript
vue鼠标悬停事件实例详解
2019/04/01 Javascript
通过实例解析chrome如何在mac环境中安装vue-devtools插件
2020/07/10 Javascript
详解JavaScript执行模型
2020/11/16 Javascript
[48:56]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 VG vs KG
2018/03/31 DOTA
基于DATAFRAME中元素的读取与修改方法
2018/06/08 Python
在python中对变量判断是否为None的三种方法总结
2019/01/23 Python
Python变量类型知识点总结
2019/02/18 Python
Python实现连接MySql数据库及增删改查操作详解
2019/04/16 Python
如何使用css3实现一个类在线直播的队列动画的示例代码
2020/06/17 HTML / CSS
浅谈HTML5 & CSS3的新交互特性
2016/07/19 HTML / CSS
萨克斯第五大道精品百货店: Saks Fifth Avenue
2017/04/28 全球购物
static关键字的用法
2013/10/07 面试题
大学生职业生涯规划范文
2014/01/22 职场文书
运动会领导邀请函
2014/02/05 职场文书
现场施工员岗位职责
2014/03/10 职场文书
2014年综治宣传月活动总结
2014/04/28 职场文书
解除劳动合同证明书
2014/09/26 职场文书
学习党的群众路线教育实践活动剖析材料
2014/10/13 职场文书
2014年医院个人工作总结
2014/12/09 职场文书
nginx反向代理时如何保持长连接
2021/03/31 Servers