3872浏览
查看: 3872|回复: 2

[入门] 【智控万物】晃头控灯

[复制链接]
本帖最后由 云天 于 2021-6-22 18:19 编辑

【智控万物】晃头控灯图1

MediaPipe 人脸检测

MediaPipe 人脸检测是一种超快的人脸检测解决方案,具有 6 个地标和多人脸支持。它基于BlazeFace,这是一种轻量级且性能良好的人脸检测器,专为移动 GPU 推理量身定制。检测器的超实时性能使其能够应用于任何需要准确的面部感兴趣区域作为其他任务特定模型输入的实时取景器体验,例如 3D 面部关键点或几何估计(例如MediaPipe Face Mesh),面部特征或表情分类,以及面部区域分割。BlazeFace 使用了一个轻量级的特征提取网络,其灵感来自于MobileNetV1/V2,但与MobileNetV1/V2不同,后者是一种 GPU 友好的锚点方案,修改自Single Shot MultiBox Detector (SSD),以及替代非极大值抑制的改进平局分辨率策略。

检测到的人脸的集合,其中每个人脸都表示为一个检测原始消息,其中包含一个边界框和 6 个关键点(右眼、左眼、鼻尖、嘴巴中心、右耳和左耳)。边界框由xmin和width(均由[0.0, 1.0]图像宽度归一化)和ymin和height(均由[0.0, 1.0]图像高度归一化)组成。每个关键点由x和组成y,分别[0.0, 1.0]由图像宽度和高度归一化。
【程序代码】
通过左右眼纵坐标的差来判断头向左歪还是向右歪
  1. import cv2
  2. import mediapipe as mp
  3. from pinpong.board import Board,Pin,NeoPixel
  4. NEOPIXEL_PIN = Pin.D7
  5. PIXELS_NUM = 7 #灯数
  6. Board("uno").begin()  #初始化,选择板型和端口号,不输入端口号则进行自动识别
  7. np = NeoPixel(Pin(NEOPIXEL_PIN), PIXELS_NUM)
  8. mp_face_detection = mp.solutions.face_detection
  9. mp_drawing = mp.solutions.drawing_utils
  10. # For webcam input:
  11. cap = cv2.VideoCapture(0)
  12. Width=cap.get(3)
  13. Height=cap.get(4)
  14. with mp_face_detection.FaceDetection(
  15.      min_detection_confidence=0.5) as face_detection:
  16.    while cap.isOpened():
  17.      success, image = cap.read()
  18.      if not success:
  19.        print("Ignoring empty camera frame.")
  20.        # If loading a video, use 'break' instead of 'continue'.
  21.        continue
  22.      # Flip the image horizontally for a later selfie-view display, and convert
  23.      # the BGR image to RGB.
  24.      image = cv2.cvtColor(cv2.flip(image, 1), cv2.COLOR_BGR2RGB)
  25.      # To improve performance, optionally mark the image as not writeable to
  26.      # pass by reference.
  27.      image.flags.writeable = False
  28.      results = face_detection.process(image)
  29.      # Draw the face detection annotations on the image.
  30.      image.flags.writeable = True
  31.      image = cv2.cvtColor(image, cv2.COLOR_RGB2BGR)
  32.      if results.detections:
  33.        for detection in results.detections:
  34.          #mp_drawing.draw_detection(image, detection)
  35.          
  36.         #计算左右眼坐标位置
  37.          RIGHT_EYE=mp_face_detection.get_key_point(detection, mp_face_detection.FaceKeyPoint.RIGHT_EYE)
  38.          LEFT_EYE=mp_face_detection.get_key_point(detection, mp_face_detection.FaceKeyPoint.LEFT_EYE)
  39.          Rx=int(RIGHT_EYE.x*Width)
  40.          Ry=int(RIGHT_EYE.y*Height)   
  41.          Lx=int(LEFT_EYE.x*Width)
  42.          Ly=int(LEFT_EYE.y*Height)      
  43.          
  44.          cv2.circle(image, (Lx,Ly), 8, (0, 255, 255), cv2.FILLED)
  45.          cv2.circle(image, (Rx,Ry), 8, (0, 255, 255), cv2.FILLED)
复制代码
【视频演示】


老邬  初级技师

发表于 2021-7-31 22:56:21

运行程序,窗口没有弹出,有以下提示,怎么原因?拜托
[10] Opening COM26...
[20] Waiting 4 seconds(arduino_wait) for Arduino devices to reset...
[22] Arduino compatible device found and connected to COM26
[30] Retrieving Arduino Firmware ID...
[32] Arduino Firmware ID: 2.6 DFRobot firmata
[40] Retrieving analog map...
[42] Auto-discovery complete. Found 20 Digital Pins and 6 Analog Pins
------------------------------
All right. PinPong go...
------------------------------

INFO: Created TensorFlow Lite XNNPACK delegate for CPU.
>>>
回复

使用道具 举报

云天  初级技神
 楼主|

发表于 2021-8-3 00:16:27

上面都是正常运行显示的内容。没有出错显示!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail