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 专题四 文件基础知识
Mar 20 Python
Python面向对象编程之继承与多态详解
Jan 16 Python
Python用 KNN 进行验证码识别的实现方法
Feb 06 Python
新手常见6种的python报错及解决方法
Mar 09 Python
Python中反射和描述器总结
Sep 23 Python
解决Python一行输出不显示的问题
Dec 03 Python
使用python绘制二元函数图像的实例
Feb 12 Python
python自动发邮件总结及实例说明【推荐】
May 31 Python
使用Python进行中文繁简转换的实现代码
Oct 18 Python
django rest framework使用django-filter用法
Jul 15 Python
python3 re返回形式总结
Nov 20 Python
Python3 使用pip安装git并获取Yahoo金融数据的操作
Apr 08 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操作MongoDB的技术总结
2013/06/02 PHP
详解WordPress中添加友情链接的方法
2016/05/21 PHP
ThinkPHP5.1框架数据库链接和增删改查操作示例
2019/08/03 PHP
JavaScript 应用类库代码
2008/06/02 Javascript
基于jQuery的淡入淡出可自动切换的幻灯插件
2010/08/24 Javascript
jquery 操作iframe的几种方法总结
2013/12/13 Javascript
Javascript:为input设置readOnly属性(示例讲解)
2013/12/25 Javascript
fckeditor粘贴Word时弹出窗口取消的方法
2014/10/30 Javascript
JavaScript事件委托实例分析
2015/05/26 Javascript
javascript实现一个数值加法函数
2015/06/26 Javascript
JS实现统计复选框选中个数并提示确定与取消的方法
2015/07/01 Javascript
javascript每日必学之封装
2016/02/23 Javascript
JavaScript数据类型转换的注意事项
2016/07/31 Javascript
基于js中的存储键值对以及注意事项介绍
2018/03/30 Javascript
vue click.stop阻止点击事件继续传播的方法
2018/09/04 Javascript
vue代码分割的实现(codesplit)
2018/11/13 Javascript
vue router 通过路由来实现切换头部标题功能
2019/04/24 Javascript
Vue 实现前端权限控制的示例代码
2019/07/09 Javascript
vue中使用element组件时事件想要传递其他参数的问题
2019/09/18 Javascript
vue设置一开始进入的页面教程
2019/10/28 Javascript
three.js利用gpu选取物体并计算交点位置的方法示例
2019/11/25 Javascript
Vue组件通信入门之Provide和Inject机制
2019/12/29 Javascript
JavaScript简易计算器制作
2020/01/17 Javascript
JavaScript实现打字游戏
2021/02/19 Javascript
Linux下Python获取IP地址的代码
2014/11/30 Python
python实现批量监控网站
2016/09/09 Python
requests和lxml实现爬虫的方法
2017/06/11 Python
Python中扩展包的安装方法详解
2017/06/14 Python
浅谈Python NLP入门教程
2017/12/25 Python
50行Python代码实现人脸检测功能
2018/01/23 Python
python内打印变量之%和f的实例
2020/02/19 Python
Python爬虫实现模拟点击动态页面
2020/03/05 Python
Corelle官方网站:购买康宁餐具
2016/11/02 全球购物
Ibood荷兰:互联网每日最佳在线优惠
2019/02/28 全球购物
竞选班长演讲稿400字
2014/08/22 职场文书
Java基于字符界面的简易收银台
2021/06/26 Java/Android