python实现人脸检测的实例分析
发表于:2025-01-24 作者:千家信息网编辑
千家信息网最后更新 2025年01月24日,这篇文章主要介绍"python实现人脸检测的实例分析"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"python实现人脸检测的实例分析"文章能帮助大家解决问题。
千家信息网最后更新 2025年01月24日python实现人脸检测的实例分析
这篇文章主要介绍"python实现人脸检测的实例分析"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"python实现人脸检测的实例分析"文章能帮助大家解决问题。
OpenCV
OpenCV 是计算机视觉领域最受欢迎的开源库,起初它由 C/C ++ 编写,现在用 Python 也能使用。
OpenCV 可以使用机器学习算法搜索图像中的人脸。由于人脸比较复杂,所以并没有一种简单的测试可以告诉我们它是否发现了人脸。但是,算法能够匹配到数千个很小的模式和特征。算法会将识别人脸的任务分解为几千个非常非常小的任务,像这种很小的任务,解决起来就比较容易了。这样的微小任务就被称为分类器。
代码结果:
方法如下:
寻找导入的xml文件
import cv2 print(cv2.__file__)
找到cv2安装的路径,在该路径下找到/data文件。
里面默认下载了一部分xml文件,不是全部的xml文件。如果需要的xml文件不在里面,需要自行在网上下载,然后放到该目录下,以备调用。比如自行安装('haarcascade_mcs_nose.xml','haarcascade_mcs_mouth.xml')
导入包:
import cv2
导入xml文件,可以根据任务需要,自行选择需要导入的xml文件
#人脸检测器face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')#眼睛检测器eye_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_eye.xml')#嘴巴检测器mouth_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_mcs_mouth.xml')#鼻子检测器nose_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_mcs_nose.xml')
设置窗口:
cv2.namedWindow('mytest', 0);cv2.resizeWindow('mytest', 1500, 1000)
打开摄像头,人脸识别:
#获取摄像头cap = cv2.VideoCapture(0,cv2.CAP_DSHOW)#打开摄像头cap.open(0)while cap.isOpened(): #获取画面 flag, frame = cap.read() #人脸检测 faces = face_cascade.detectMultiScale(frame, 1.3, 2) img = frame for (x, y, w, h) in faces: #根据人脸坐标和长度,宽度画出矩形 img = cv2.rectangle(img, (x, y), (x+w, y+h),(255, 0 ,0), 2) #确定人脸范围,在人脸上搜索其他特征 face_area = img[y:y+h, x:x+w] #人眼检测 eyes = eye_cascade.detectMultiScale(face_area, 1.3, 2) for (ex, ey, ew, eh) in eyes: cv2.rectangle(face_area, (ex, ey), (ex + ew, ey + eh), (255, 0 ,0), 1) #嘴巴检测 mouth = mouth_cascade.detectMultiScale(face_area, 1.5, 2) for (mx, my, mw, mh) in mouth: cv2.rectangle(face_area, (mx, my), (mx + mw, my + mh), (0, 0, 255), 2) # 鼻子检测 nose = nose_cascade.detectMultiScale(face_area, 1.2, 5) for (nx, ny, nw, nh) in nose: cv2.rectangle(face_area, (nx, ny), (nx + nw, ny + nh), (255, 0, 255), 2) #画面显示 cv2.imshow('mytest', img) #设置退出按钮 key_pressed = cv2.waitKey(100) print('单机窗口,输入按键,电脑按键为',key_pressed,'按esc键结束') if key_pressed == 27: break #关闭摄像头cap.release()#关闭图像窗口cv2.destroyAllWindows()
完整代码:
import cv2#人脸检测器face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')#眼睛检测器eye_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_eye.xml')#嘴巴检测器mouth_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_mcs_mouth.xml')#鼻子检测器nose_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_mcs_nose.xml') #获取摄像头cap = cv2.VideoCapture(0,cv2.CAP_DSHOW)#打开摄像头cap.open(0)cv2.namedWindow('mytest', 0);cv2.resizeWindow('mytest', 1500, 1000)while cap.isOpened(): #获取画面 flag, frame = cap.read() #人脸检测 faces = face_cascade.detectMultiScale(frame, 1.3, 2) img = frame for (x, y, w, h) in faces: #根据人脸坐标和长度,宽度画出矩形 img = cv2.rectangle(img, (x, y), (x+w, y+h),(255, 0 ,0), 2) #确定人脸范围,在人脸上搜索其他特征 face_area = img[y:y+h, x:x+w] #人眼检测 eyes = eye_cascade.detectMultiScale(face_area, 1.3, 2) for (ex, ey, ew, eh) in eyes: cv2.rectangle(face_area, (ex, ey), (ex + ew, ey + eh), (255, 0 ,0), 1) #嘴巴检测 mouth = mouth_cascade.detectMultiScale(face_area, 1.5, 2) for (mx, my, mw, mh) in mouth: cv2.rectangle(face_area, (mx, my), (mx + mw, my + mh), (0, 0, 255), 2) # 鼻子检测 nose = nose_cascade.detectMultiScale(face_area, 1.2, 5) for (nx, ny, nw, nh) in nose: cv2.rectangle(face_area, (nx, ny), (nx + nw, ny + nh), (255, 0, 255), 2) #画面显示 cv2.imshow('mytest', img) #设置退出按钮 key_pressed = cv2.waitKey(100) print('单机窗口,输入按键,电脑按键为',key_pressed,'按esc键结束') if key_pressed == 27: break #关闭摄像头cap.release()#关闭图像窗口cv2.destroyAllWindows()
关于"python实现人脸检测的实例分析"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注行业资讯频道,小编每天都会为大家更新不同的知识点。
检测
人脸
检测器
摄像头
文件
摄像
任务
嘴巴
按键
画面
鼻子
实例
实例分析
分析
图像
特征
知识
算法
搜索
人眼
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
从化高端网络安全建设
在线做数据库
工控组态数据库
nba2k21服务器无法正常使用
数据库系统不包括应用开发系统
英灵神殿服务器控制台指令
烈火英雄网络安全吗
上海常康网络技术有限公司
java软件开发硬件环境
湖北省荆门市网络安全服务
软件工程流程图数据库符号
随着网络技术的普及的英语
软件开发模型 物理系统
网络安全微课入围名单
网易服务器购买
RH9032服务器
数据库是否是单线程的
计算机网络安全防范的目标
电磁环境数据库规范
提高软件开发效率 开发软件用
网吧服务器下载游戏
苏州net软件开发哪家实惠
网络安全中学生漫画
信阳职业学院网络安全专业好吗
南通服务器报废单价
数据库修复工具在哪里下载
怎么查服务器管理员
苹果关闭俄罗斯的服务器
书店数据库管理系统毕业设计
数据库中物理文件名错误