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基于PycURL实现POST的方法
Jul 25 Python
python 多线程实现检测服务器在线情况
Nov 25 Python
Python面向对象之继承代码详解
Jan 29 Python
python使用tornado实现简单爬虫
Jul 28 Python
python实现根据指定字符截取对应的行的内容方法
Oct 23 Python
使用pyshp包进行shapefile文件修改的例子
Dec 06 Python
python itsdangerous模块的具体使用方法
Feb 17 Python
jupyter修改文件名方式(TensorFlow)
Apr 21 Python
opencv 形态学变换(开运算,闭运算,梯度运算)
Jul 07 Python
浅谈Python描述数据结构之KMP篇
Sep 06 Python
如何使用Tkinter进行窗口的管理与设置
Jun 30 Python
pycharm无法安装cv2模块问题
May 20 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通用防注入程序 推荐
2011/02/26 PHP
php面向对象中的魔术方法中文说明
2014/03/04 PHP
php连接MSsql server的五种方法总结
2018/03/04 PHP
thinkPHP框架RBAC实现原理分析
2019/02/01 PHP
JS正则表达式大全(整理详细且实用)
2013/11/14 Javascript
Eclipse去除js(JavaScript)验证错误
2014/02/11 Javascript
原生JS实现LOADING效果
2015/03/16 Javascript
jQuery实现可关闭固定于底(顶)部的工具条菜单效果
2015/11/06 Javascript
js获取腾讯视频ID的方法
2016/10/03 Javascript
JavaScript实现简易的天数计算器实例【附demo源码下载】
2017/01/18 Javascript
sublime text配置node.js调试(图文教程)
2017/11/23 Javascript
Vue单页面应用保证F5强刷不清空数据的解决方案
2018/01/31 Javascript
Node.js使用supervisor进行开发中调试的方法
2019/03/26 Javascript
vue项目中引入vue-datepicker插件的详解
2019/05/14 Javascript
[15:41]教你分分钟做大人——灰烬之灵
2015/03/11 DOTA
详谈python http长连接客户端
2017/06/12 Python
Python数据结构之栈、队列的实现代码分享
2017/12/04 Python
Python使用win32com模块实现数据库表结构自动生成word表格的方法
2018/07/17 Python
python实现飞机大战
2018/09/11 Python
Django框架实现的简单分页功能示例
2018/12/04 Python
python实现两个文件夹的同步
2019/08/29 Python
Python实现图片裁剪的两种方式(Pillow和OpenCV)
2019/10/30 Python
详解CSS3的图层阴影和文字阴影效果使用
2016/06/09 HTML / CSS
HTML5中的网络存储实现方式
2020/04/28 HTML / CSS
美国著名的婴儿学步鞋老品牌:Robeez
2016/08/20 全球购物
西雅图的买手店:Totokaelo
2019/10/19 全球购物
社区巾帼文明岗事迹材料
2014/06/03 职场文书
华清池导游词
2015/02/02 职场文书
行政主管岗位职责
2015/02/03 职场文书
个人承诺书格式范文
2015/04/29 职场文书
go语言求任意类型切片的长度操作
2021/04/26 Golang
golang中实现给gif、png、jpeg图片添加文字水印
2021/04/26 Golang
python本地文件服务器实例教程
2021/05/02 Python
安装配置mysql及Navicat prenium的详细流程
2021/06/10 MySQL
SpringCloud Feign请求头删除修改的操作代码
2022/03/20 Java/Android
JS class语法糖的深入剖析
2022/07/07 Javascript