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 相关文章推荐
编写自定义的Django模板加载器的简单示例
Jul 21 Python
Python 爬虫学习笔记之正则表达式
Sep 21 Python
详解Python中表达式i += x与i = i + x是否等价
Feb 08 Python
Python cookbook(数据结构与算法)实现优先级队列的方法示例
Feb 18 Python
python实现俄罗斯方块
Jun 26 Python
pandas筛选某列出现编码错误的解决方法
Nov 07 Python
python字典改变value值方法总结
Jun 21 Python
wxpython绘制音频效果
Nov 18 Python
Python3使用腾讯云文字识别(腾讯OCR)提取图片中的文字内容实例详解
Feb 18 Python
Python变量格式化输出实现原理解析
Aug 06 Python
python3实现飞机大战
Nov 29 Python
基于Python的EasyGUI学习实践
May 07 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
实用函数5
2007/11/08 PHP
php 动态执行带有参数的类方法
2009/04/10 PHP
PHP foreach循环使用详解与实例代码
2010/05/08 PHP
如何在php中正确的使用json
2013/08/06 PHP
IE和Mozilla的兼容性汇总event
2007/08/12 Javascript
Javascript 文件夹选择框的两种解决方案
2009/07/01 Javascript
网页中的图片的处理方法与代码
2009/11/26 Javascript
Jquery cookie操作代码
2010/03/14 Javascript
jQuery图片滚动图片的效果(另类实现)
2013/06/02 Javascript
jquery 自定义容器下雨效果可将下雨图标改为其他
2014/04/23 Javascript
jQuery form插件之ajaxForm()和ajaxSubmit()的可选参数项对象
2016/01/23 Javascript
理解javascript模块化
2016/03/28 Javascript
Jquery实现跨域异步上传文件总结
2017/02/03 Javascript
详解浏览器渲染页面过程
2017/02/09 Javascript
Node.js中流(stream)的使用方法示例
2017/07/16 Javascript
AngularJS实现的生成随机数与猜数字大小功能示例
2017/12/25 Javascript
JavaScript中EventLoop介绍
2018/01/22 Javascript
详解Chart.js轻量级图表库的使用经验
2018/05/22 Javascript
vue-cli 打包后提交到线上出现 "Uncaught SyntaxError:Unexpected token" 报错
2018/11/06 Javascript
jQuery实现简易QQ聊天框
2020/02/10 jQuery
Python备份目录及目录下的全部内容的实现方法
2016/06/12 Python
利用python实现数据分析
2017/01/11 Python
浅谈Python由__dict__和dir()引发的一些思考
2017/10/30 Python
python requests.post带head和body的实例
2019/01/02 Python
Python2和Python3的共存和切换使用
2019/04/12 Python
Python读取分割压缩TXT文本文件实例
2020/02/14 Python
Python定义一个函数的方法
2020/06/15 Python
python 输入字符串生成所有有效的IP地址(LeetCode 93号题)
2020/10/15 Python
eBay英国购物网站:eBay.co.uk
2019/06/19 全球购物
新闻编辑求职信
2014/04/09 职场文书
就业协议书的作用
2014/04/11 职场文书
我们的节日清明节活动总结
2014/04/30 职场文书
医药销售自我评价200字
2014/09/11 职场文书
幼儿园辞职书
2015/02/26 职场文书
刑事附带民事上诉状
2015/05/23 职场文书
nginx内存池源码解析
2021/11/20 Servers