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使用回溯法子集树模板解决爬楼梯问题示例
Sep 08 Python
在pandas多重索引multiIndex中选定指定索引的行方法
Nov 16 Python
python之cv2与图像的载入、显示和保存实例
Dec 05 Python
Python实现合并两个有序链表的方法示例
Jan 31 Python
详解利用Python scipy.signal.filtfilt() 实现信号滤波
Jun 05 Python
python 实现GUI(图形用户界面)编程详解
Jul 17 Python
python+rsync精确同步指定格式文件
Aug 29 Python
python计算波峰波谷值的方法(极值点)
Feb 18 Python
python 子类调用父类的构造函数实例
Mar 12 Python
新版Pycharm中Matplotlib不会弹出独立的显示窗口的问题
Jun 02 Python
Python经典五人分鱼实例讲解
Jan 04 Python
Python使用永中文档转换服务
May 06 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
wamp安装后自定义配置的方法
2014/08/23 PHP
PHP的cURL库简介及使用示例
2015/02/06 PHP
Symfony2中被遗弃的getRequest()方法分析
2016/03/17 PHP
在laravel5.2中实现点击用户头像更改头像的方法
2019/10/14 PHP
javascript获取网页中指定节点的父节点、子节点的方法小结
2013/04/24 Javascript
Ajax异步提交表单数据的说明及方法实例
2013/06/22 Javascript
json数据的列循环示例
2013/09/06 Javascript
浮动的div自适应居中显示的js代码
2013/12/23 Javascript
jquery带翻页动画的电子杂志代码分享
2015/08/21 Javascript
js判断当前页面用什么浏览器打开的方法
2016/01/06 Javascript
jQuery插件datatables使用教程
2016/04/21 Javascript
常用Javascript函数与原型功能收藏(必看篇)
2016/10/09 Javascript
基于BootStrap的前端分页带省略号和上下页效果
2017/05/18 Javascript
谈谈对vue响应式数据更新的误解
2017/08/01 Javascript
jQuery实现监听下拉框选中内容发生改变操作示例
2018/07/13 jQuery
[31:00]2014 DOTA2华西杯精英邀请赛5 24 NewBee VS iG
2014/05/25 DOTA
python实现将元祖转换成数组的方法
2015/05/04 Python
Djang中静态文件配置方法
2015/07/30 Python
Python探索之静态方法和类方法的区别详解
2017/10/27 Python
Python基于动态规划算法解决01背包问题实例
2017/12/06 Python
python实现二叉查找树实例代码
2018/02/08 Python
Jacobi迭代算法的Python实现详解
2019/06/29 Python
Html5 FileReader实现即时上传图片功能实例代码
2014/09/01 HTML / CSS
Hotels.com爱尔兰:全球酒店预订
2017/02/24 全球购物
ZINVO手表官网:男士和女士手表
2019/03/10 全球购物
业务员岗位职责范本
2013/12/15 职场文书
社区安全检查制度
2014/02/03 职场文书
校园安全检查制度
2014/02/03 职场文书
创业大赛策划书
2014/03/01 职场文书
班级心理活动总结
2014/07/04 职场文书
合作经营协议书范本
2014/09/16 职场文书
党员批评与自我批评发言稿
2014/10/14 职场文书
2016元旦主持人经典开场白台词
2015/12/03 职场文书
导游词之千岛湖
2019/09/23 职场文书
springboot利用redis、Redisson处理并发问题的操作
2021/06/18 Java/Android
SpringBoot+VUE实现数据表格的实战
2021/08/02 Java/Android