当前位置:   article > 正文

人脸检测(Python)_python facedetector

python facedetector

 

目录

环境:

初始化摄像头: 

初始化FaceDetector对象:

获取摄像头帧: 

获取数据:

绘制数据:

显示图像:

完整代码: 

环境:

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

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

可以通过清华镜像源安装

初始化摄像头: 

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

初始化FaceDetector对象:

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

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

获取摄像头帧: 

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

获取数据

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

绘制数据:

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

显示图像:

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

完整代码: 

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/酷酷是懒虫/article/detail/867167
推荐阅读
相关标签
  

闽ICP备14008679号