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对两个有序列表进行合并和排序的例子
Jun 13 Python
Python写的贪吃蛇游戏例子
Jun 16 Python
python正则表达式中的括号匹配问题
Dec 14 Python
10个易被忽视但应掌握的Python基本用法
Apr 01 Python
讲解Python中for循环下的索引变量的作用域
Apr 15 Python
Python中json格式数据的编码与解码方法详解
Jul 01 Python
Python各类图像库的图片读写方式总结(推荐)
Feb 23 Python
pandas.DataFrame选取/排除特定行的方法
Jul 03 Python
对python模块中多个类的用法详解
Jan 10 Python
基于pycharm实现批量修改变量名
Jun 02 Python
python/golang 删除链表中的元素
Sep 14 Python
Django migrate报错的解决方案
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数组内存耗用太多问题的解决方法
2010/04/05 PHP
Laravel 5框架学习之用户认证
2015/04/09 PHP
yii实现model添加默认值的方法(2种方法)
2016/01/06 PHP
PHP 验证身份证是否合法的函数
2017/02/09 PHP
制作特殊字的脚本
2006/06/26 Javascript
jQuery html() in Firefox (uses .innerHTML) ignores DOM changes
2010/03/05 Javascript
jquery png 透明解决方案(推荐)
2010/08/21 Javascript
让浏览器非阻塞加载javascript的几种方法小结
2011/04/25 Javascript
基于jquery的滚动鼠标放大缩小图片效果
2011/10/27 Javascript
40款非常棒的jQuery 插件和制作教程(系列二)
2011/11/02 Javascript
js获取html参数及向swf传递参数应用介绍
2013/02/18 Javascript
解决JavaScript数字精度丢失问题的方法
2015/12/03 Javascript
利用JS实现简单的日期选择插件
2017/01/23 Javascript
详解Vue2.x-directive的学习笔记
2017/07/17 Javascript
ReactNative Image组件使用详解
2017/08/07 Javascript
React Native时间转换格式工具类分享
2017/10/24 Javascript
jquery应用实例分享_实现手风琴特效
2018/02/01 jQuery
使用pm2部署node生产环境的方法步骤
2019/03/09 Javascript
[01:01:43]EG vs VP 2018国际邀请赛淘汰赛BO3 第二场 8.24
2018/08/25 DOTA
[00:49]完美世界DOTA2联赛10月28日开团时刻:随便打
2020/10/29 DOTA
在Django中编写模版节点及注册标签的方法
2015/07/20 Python
python基于itchat模块实现微信防撤回
2019/04/29 Python
如何在sublime编辑器中安装python
2020/05/20 Python
python文件及目录操作代码汇总
2020/07/08 Python
html5指南-4.使用Geolocation实现定位功能
2013/01/07 HTML / CSS
戴森美国官网:Dyson美国
2016/09/11 全球购物
银行实习生的自我评价
2014/01/13 职场文书
优秀班集体获奖感言
2014/02/03 职场文书
社会稳定风险评估方案
2014/06/02 职场文书
合伙购房协议样本
2014/10/06 职场文书
李强优秀员工观后感
2015/06/16 职场文书
《曾国藩家书》读后感——读家书,立家风
2019/08/21 职场文书
Go各时间字符串使用解析
2021/04/02 Golang
探讨Java中的深浅拷贝问题
2021/06/26 Java/Android
CSS+HTML 实现顶部导航栏功能
2021/08/30 HTML / CSS
python开发制作好看的时钟效果
2022/05/02 Python