|
目录环境:初始化摄像头: 初始化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)
|
|