赞
踩
若该文为原创文章,转载请注明原文出处。
MediaPipe 是一款由 Google Research 开发并开源的多媒体机器学习模型应用框架。在谷歌,一系列重要产品,如 YouTube、Google Lens、ARCore、Google Home 以及 Nest,都已深度整合了 MediaPipe。MediaPipe大有用武之地,可以做物体检测、自拍分割、头发分割、人脸检测、手部检测、运动追踪,等等。基于此可以实现更高级的功能。
更多详细可以查看官方文档地址MediaPipe | Google for Developers
mediaipe提供了很多功能,包含目标识别,骨骼识别,图像分割,人脑识别检测等功能
官方也提供了基于Android,python和web的例子,这里测试是基于python
这里测试的是手指骨骼识别,模型包检测21个手关节的关键点定位 检测到的手区域内的坐标。
conda create -n mediapipe python=3.8
conda activate mediapipe
- pip install mediapipe
- 或
- pip install mediapipe -i https://pypi.douban.com/simple
pip install opencv-python
pip install opencv-contrib-python
pycharm使用的是社区版本,喜欢使用指令的,可以不用安装
安装后界面
导入虚拟环境
确定后,会发现,pycharm会把环境切换成创建的虚拟环境。
这里有个要注意的,如果终端显示的不是我们的虚拟环境,我这边显示的是base需要修改
修改Terminal的Application Settings改成powershell.exe
程序参考Example:Gesture recognition guide for Python | MediaPipe | Google for Developers
代码流程
- 1、导入库
- 2、使用cv2打开摄像头
- 3、使用mediapipe推理摄像头捕捉到的图片
- 4、显示结果
源代码
- import sys
- import cv2
- import mediapipe as mp
-
- mp_face_detection = mp.solutions.face_detection
- mp_drawing = mp.solutions.drawing_utils
- mp_drawing = mp.solutions.drawing_utils
- mp_hands = mp.solutions.hands
- # For webcam input:
- cap = cv2.VideoCapture(0)
- with mp_hands.Hands(
- min_detection_confidence=0.9,
- min_tracking_confidence=0.9) as hands:
- while cap.isOpened():
- success, image = cap.read()
- if not success:
- print("Ignoring empty camera frame.")
- # If loading a video, use 'break' instead of 'continue'.
- continue
-
- # Flip the image horizontally for a later selfie-view display, and convert
- # the BGR image to RGB.
- image = cv2.cvtColor(cv2.flip(image, 1), cv2.COLOR_BGR2RGB)
- # To improve performance, optionally mark the image as not writeable to
- # pass by reference.
- image.flags.writeable = False
- results = hands.process(image)
-
- # Draw the hand annotations on the image.
- image.flags.writeable = True
- image = cv2.cvtColor(image, cv2.COLOR_RGB2BGR)
- if results.multi_hand_landmarks:
- for hand_landmarks in results.multi_hand_landmarks:
- mp_drawing.draw_landmarks(
- image, hand_landmarks, mp_hands.HAND_CONNECTIONS)
- cv2.imshow('MediaPipe Hands', image)
- if cv2.waitKey(5) & 0xFF == 27:
- break
- cap.release()
使用的电脑是cpu版本,测试显示感觉还是可以的。
至此测试结束,接下来将使用mediapipe做手势识别及音量控制等。
如有侵权,或需要完整代码,请及时联系博主。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。