Python基于OpenCV实现人脸检测并保存
作者:canger_ 发布时间:2023-10-07 00:43:37
标签:Python,OpenCV,人脸检测
本文实例为大家分享了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可以将框住的人脸截取保存
来源:https://blog.csdn.net/Canger_/article/details/82751234
0
投稿
猜你喜欢
- 如何在ASP.NET中使用ADO.NET连接数据库?以连接Access数据库为例,步骤如下:一、我们来用有源ODBC DSN的方法和无源OL
- 这篇论坛文章(赛迪网技术社区)主要介绍了一种简单的MySQL数据库安装方法,详细内容请大家参考下文:虽然安装MySQL数据库的文章很多,但是
- 如果需要在查询语句返回的列中包含一列表示该条记录在整个结果集中的行号, ISO SQL:2003 标准提出的方法是提供 ROW_NUMBER
- 我们用session来实现这一设想。由于session是用户级的全局变量,将登录的信息记录到session中后,用户就可直接浏览这些特定的页
- 本文实例讲述了PHP实现的XXTEA加密解密算法。分享给大家供大家参考,具体如下:<?php/** * Xxtea 加密实现类 */c
- 微信小程序全称微信公众平台·小程序,原名微信公众平台·应用号(简称微信应用号)声明•微信小程序开发工具类似于一个轻量级的IDE集成开发环境,
- 1. 鼠标的哪个按键被点击?<html><head><script type="text/javas
- 但有时候,需要当某事件触发时,我们先做一些操作,然后再跳转,这时,就要用JAVASCRIPT来实现这一跳转功能。 下面是具体的做法: 一:跳
- 主函数(Main Function)是程序中最重要的部分之一,它是程序入口点,也是程序开始执行的地方。1、主函数的定义在 Python 中,
- 文通过一个操作实例来说明SQL中主标识列IDENTITY的使用技巧。要求:在 sql server 2005中,建立数据表book,在表bo
- asp定时生成静态HTML的代码,对于缓解服务器压力有很大帮主,需要的朋友可以参考下。<% '判断是否要生成新的HT
- 前言最近在开发项目时遇到了发现一个问题,gorm虽然可以自动帮你维护 created_at、updated_at、deleted_at这些关
- 一、 简单查询简单的Transact-SQL查询只包括选择列表、FROM子句和Where子句。它们分别说明所查询列、查询的表或视图、以及搜索
- 阅读上一篇:FrontPage2002简明教程七:HTML在FrontPage中的应用 FrontPage 2002比起以前版本的FronP
- 打开php.ini,首先找到file_uploads = on ;是否允许通过HTTP上传文件的开关。默认为ON即是开upload_tmp_
- 程序编制 随着WEB的发展,与浏览者的交互越来越受到网站制作者的重视。现在的主页跟最初的静态主
- 操作系统:Windows2000,IIS5出现症状:使用ASPJPEG时执行Server.CreateObject("Persit
- 如何在线修改表?具体代码如下:<%Set conn1 = Server.CreateObject(&qu
- 一个不错的js星级评分代码,可以评多个指标。相关文章推荐:用css制作星级投票评分功能 效果图:<script language=&q
- 写完“无序列表”和“有序列表”之后已经有人和我说这两篇看得没什么意思。这两篇文章如果只以单向读取的形式阅读那么的确是没什么意思,但是这两篇重