人脸检测(Python)
创始人
2024-12-27 08:38:12
0

 

目录

环境:

初始化摄像头: 

初始化FaceDetector对象:

获取摄像头帧: 

获取数据:

绘制数据:

显示图像:

完整代码: 

环境:

 cvzone库:cvzone是一个基于OpenCV的计算机视觉库,它提供了一些方便的功能和工具,用于图像处理、人脸检测、手势识别等应用。cvzone库是由Murtaza Hassan开发的,目前支持Python语言。

cv2库:cv2是OpenCV(Open Source Computer Vision Library)的Python接口库,它是一种广泛使用的计算机视觉和图像处理库。cv2提供了丰富的函数和工具,用于处理图像、视频、进行特征检测、图像变换等各种计算机视觉任务。

可以通过清华镜像源安装

初始化摄像头: 

cap = cv2.VideoCapture(0) # 通常 '0' 指的是内置摄像头 cap.set(3,1280)     #设置摄像头的分辨率为 1280x720 cap.set(4,720)

初始化FaceDetector对象:

FaceDetector是一个基于OpenCV的库,它提供了一个简单而强大的人脸检测器。它使用了OpenCV的级联分类器(Cascade Classifier)来检测人脸,并提供了方便易用的接口。FaceDetector可以在静态图像或实时视频中检测出人脸,并返回每个检测到的人脸的位置和边界框。它还可以根据需要进行参数调整,以适应不同场景和要求。FaceDetector在诸如人脸识别、人脸跟踪、表情检测等应用中非常有用。

detector = FaceDetector(minDetectionCon=0.5, modelSelection=1) # modelSelection: 0 表示短距离检测(2米),1 表示长距离检测(5米)

获取摄像头帧: 

 # success: 布尔值,表示是否成功捕获了帧     # img: 捕获的帧     success, img = cap.read() # 从摄像头读取当前帧      # 在图像中检测人脸     # img: 更新后的图像     # bboxs: 检测到的人脸边界框列表     img, bboxs = detector.findFaces(img, draw=False) #在图像中检测人脸,并返回更新后的图像和人脸边界框列表

获取数据:

 # ---- 获取数据 ---- #             center = bbox["center"]  # 获取人脸中心坐标             x, y, w, h = bbox['bbox']  # 获取边界框的坐标和大小             score = int(bbox['score'][0] * 100)  # 获取识别置信度(百分比) 

绘制数据:

  # ---- 绘制数据 ---- #             cv2.circle(img, center, 5, (255, 0, 255), cv2.FILLED)  # 绘制圆形标记人脸中心             cvzone.putTextRect(img, f'{score}%', (x, y - 15), border=5)  # 显示识别置信度文本             cvzone.cornerRect(img, (x, y, w, h))  # 绘制矩形框

显示图像:

 # 在名为'Image'的窗口中显示图像     cv2.imshow("Image", img)     # 等待1毫秒,如果按下任意键则关闭窗口     cv2.waitKey(1) 

完整代码: 

#coding=gbk # 导入必要的库 import cvzone from cvzone.FaceDetectionModule import FaceDetector import cv2 import logging  # 配置日志记录 logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')  # 记录日志信息 logging.info('这是一条信息日志') logging.warning('这是一条警告日志') logging.error('这是一条错误日志') # 初始化摄像头 cap = cv2.VideoCapture(0) # 通常 '0' 指的是内置摄像头 cap.set(3,1280)     #设置摄像头的分辨率为 1280x720 cap.set(4,720)  # 初始化FaceDetector对象 # minDetectionCon: 最小检测置信度阈值 # modelSelection: 0 表示短距离检测(2米),1 表示长距离检测(5米) detector = FaceDetector(minDetectionCon=0.5, modelSelection=1)  # 循环获取摄像头帧 while True:     # success: 布尔值,表示是否成功捕获了帧     # img: 捕获的帧     success, img = cap.read() # 从摄像头读取当前帧      # 在图像中检测人脸     # img: 更新后的图像     # bboxs: 检测到的人脸边界框列表     img, bboxs = detector.findFaces(img, draw=False) #在图像中检测人脸,并返回更新后的图像和人脸边界框列表      # 如果检测到人脸     if bboxs:         # 遍历每个边界框         for bbox in bboxs:             # bbox 包含 'id', 'bbox', 'score', 'center'              # ---- 获取数据 ---- #             center = bbox["center"]  # 获取人脸中心坐标             x, y, w, h = bbox['bbox']  # 获取边界框的坐标和大小             score = int(bbox['score'][0] * 100)  # 获取识别置信度(百分比)              # ---- 绘制数据 ---- #             cv2.circle(img, center, 5, (255, 0, 255), cv2.FILLED)  # 绘制圆形标记人脸中心             cvzone.putTextRect(img, f'{score}%', (x, y - 15), border=5)  # 显示识别置信度文本             cvzone.cornerRect(img, (x, y, w, h))  # 绘制矩形框      # 在名为'Image'的窗口中显示图像     cv2.imshow("Image", img)     # 等待1毫秒,如果按下任意键则关闭窗口     cv2.waitKey(1) 

相关内容

热门资讯

绝活儿辅助!广西老友玩老是输怎... 绝活儿辅助!广西老友玩老是输怎么办(辅助挂)都是真的有辅助app(讲解有挂)在进入广西老友玩老是输怎...
法门辅助!福建13水插件(辅助... 法门辅助!福建13水插件(辅助挂)一贯是有辅助技巧(有挂技术)1、许多玩家不知道福建13水插件辅助怎...
办法辅助!潮友会app下载官方... 办法辅助!潮友会app下载官方辅助器(辅助挂)真是真的是有辅助app(有挂教程)该软件可以轻松地帮助...
妙招辅助!邯郸胡乐挂辅助(辅助... 妙招辅助!邯郸胡乐挂辅助(辅助挂)好像存在有辅助插件(有挂方略)1、上手简单,内置详细流程视频教学,...
教程书辅助!乐酷辅助(辅助挂)... 教程书辅助!乐酷辅助(辅助挂)其实存在有辅助脚本(有挂细节)乐酷辅助能透视中分为三种模型:乐酷辅助模...
学习辅助!决战卡五星辅助(辅助... 学习辅助!决战卡五星辅助(辅助挂)本来真的是有辅助软件(有人有挂)学习辅助!决战卡五星辅助(辅助挂)...
绝活辅助!边锋嘉兴麻将辅助器(... 绝活辅助!边锋嘉兴麻将辅助器(辅助挂)真是真的有辅助神器(新版有挂)1、边锋嘉兴麻将辅助器公共底牌简...
举措辅助!枫叶辅助器(辅助挂)... 举措辅助!枫叶辅助器(辅助挂)本来存在有辅助技巧(竟然有挂)1、下载好枫叶辅助器正确养号方法之后点击...
讲义辅助!点我达辅助(辅助挂)... 讲义辅助!点我达辅助(辅助挂)一直存在有辅助技巧(有人有挂)1、点我达辅助辅助器安装包、点我达辅助辅...
模块辅助!威信茶馆有挂的吗(辅... 模块辅助!威信茶馆有挂的吗(辅助挂)一直真的是有辅助脚本(揭秘有挂)1、玩家可以在威信茶馆有挂的吗线...