找回密码
 会员注册
查看: 18|回复: 0

人脸检测(Python)

[复制链接]

3

主题

0

回帖

10

积分

新手上路

积分
10
发表于 2024-9-10 18:15:38 | 显示全部楼层 |阅读模式
目录环境:初始化摄像头: 初始化FaceDetector对象:获取摄像头帧: 获取数据:绘制数据:显示图像:完整代码: 环境: cvzone库:cvzone是一个基于OpenCV的计算机视觉库,它提供了一些方便的功能和工具,用于图像处理、人脸检测、手势识别等应用。cvzone库是由MurtazaHassan开发的,目前支持Python语言。cv2库:cv2是OpenCV(OpenSourceComputerVisionLibrary)的Python接口库,它是一种广泛使用的计算机视觉和图像处理库。cv2提供了丰富的函数和工具,用于处理图像、视频、进行特征检测、图像变换等各种计算机视觉任务。可以通过清华镜像源安装初始化摄像头: cap=cv2.VideoCapture(0)#通常'0'指的是内置摄像头cap.set(3,1280)#设置摄像头的分辨率为1280x720cap.set(4,720)初始化FaceDetector对象:FaceDetector是一个基于OpenCV的库,它提供了一个简单而强大的人脸检测器。它使用了OpenCV的级联分类器(CascadeClassifier)来检测人脸,并提供了方便易用的接口。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#导入必要的库importcvzonefromcvzone.FaceDetectionModuleimportFaceDetectorimportcv2importlogging#配置日志记录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)#设置摄像头的分辨率为1280x720cap.set(4,720)#初始化FaceDetector对象#minDetectionCon:最小检测置信度阈值#modelSelection:0表示短距离检测(2米),1表示长距离检测(5米)detector=FaceDetector(minDetectionCon=0.5,modelSelection=1)#循环获取摄像头帧whileTrue:#success:布尔值,表示是否成功捕获了帧#img:捕获的帧success,img=cap.read()#从摄像头读取当前帧#在图像中检测人脸#img:更新后的图像#bboxs:检测到的人脸边界框列表img,bboxs=detector.findFaces(img,draw=False)#在图像中检测人脸,并返回更新后的图像和人脸边界框列表#如果检测到人脸ifbboxs:#遍历每个边界框forbboxinbboxs:#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)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2025-1-7 06:40 , Processed in 0.423986 second(s), 25 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表