介绍
Mediapipe是Google在2019年开发并提出的一款开源的跨平台多媒体处理框架,用于构建基于机器学习的应用程序,特别是涉及到计算机视觉、音频处理、姿势估计等领域。Mediapipe实际上是一个集成的机器学习视觉算法的工具库(包含人脸检测、人脸关键点、手势识别、头像分割和姿态识别等各种模型),该库提供了一系列预训练模型和工具,可以帮助开发者快速构建和部署计算机视觉和音频处理应用。它提供了一套易于使用的API,可以用于实时姿势估计、手势识别、面部识别、目标跟踪等任务。
相关网址
参考网址:https://developers.google.cn/mediapipe
Github开源项目地址:https://github.com/google/mediapipe
由于某些原因,上面的内容可能都访问不到,还可以访问下面的地址:
https://chuoling.github.io/mediapipe/
MediaPipe的图形化工具:
MediaPipe实践手册:
一些模型的web体验地址(用到电脑摄像头):
人脸检测:https://code.mediapipe.dev/codepen/face_detection
人脸关键点:https://code.mediapipe.dev/codepen/face_mesh
手势识别:https://code.mediapipe.dev/codepen/hands
姿态识别:https://code.mediapipe.dev/codepen/pose
自拍头像分割:https://code.mediapipe.dev/codepen/selfie_segmentation
特点
Mediapipe库的主要特点包括:
实时性能:提供高效的实时处理能力,适用于实时应用程序和流媒体处理,各种模型基本上可以做到实时运行且速度较快。
跨平台支持和多语言支持:支持在多个平台上运行,包括Android、iOS、Windows和Linux等,支持C++,Python,JAVAScript,Coral等主流编程语言。
灵活性:可以根据需要自定义和扩展,适用于各种不同的应用场景。
高质量的预训练模型:提供了一系列经过训练的模型,可以直接用于各种计算机视觉和音频处理任务
开发
使用Mediapipe库进行开发,通常需要以下步骤:
1.安装Mediapipe库:可以使用pip命令来安装Mediapipe库,例如:pip install mediapipe。
2.导入Mediapipe库:在Python代码中导入Mediapipe库,例如:import mediapipe as mp。
3.加载预训练模型:使用Mediapipe库提供的模型,加载需要的预训练模型,例如:hands = mp.solutions.hands.Hands()。
4.处理输入数据:将需要处理的输入数据传递给加载的模型,例如:results = hands.process(image)。
5.获取结果:从处理结果中提取需要的信息,例如:landmarks = results.multi_hand_landmarks。
6.进行后续处理:根据需要对结果进行进一步处理或应用。
以上是使用Mediapipe库进行开发的基本步骤。具体的使用方法和示例代码可以参考Mediapipe官方文档和示例代码。
支持的Python版本
Mediapipe库支持的Python版本包括:
Python 3.7
Python 3.8
Python 3.9
Python 3.10
这些是当前Mediapipe库所支持的Python版本。请注意,某些功能可能仅在特定的Python版本中可用。因此,建议使用最新版本的Python来获得最佳的兼容性和性能。
应用
Mediapipe手势识别
import cv2 import mediapipe as mp mp_drawing = mp.solutions.drawing_utils mp_hands = mp.solutions.hands hands = mp_hands.Hands( static_image_mode=False, max_num_hands=2, min_detection_confidence=0.75, min_tracking_confidence=0.75) cap = cv2.VideoCapture(0) while True: ret, frame = cap.read() frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB) # 因为摄像头是镜像的,所以将摄像头水平翻转 # 不是镜像的可以不翻转 frame = cv2.flip(frame, 1) results = hands.process(frame) # process()是手势识别最核心的方法,通过调用这个方法,将窗口对象作为参数,mediapipe就会将手势识别的信息存入到res对象中 frame = cv2.cvtColor(frame, cv2.COLOR_RGB2BGR) if results.multi_handedness: for hand_label in results.multi_handedness: print(hand_label) if results.multi_hand_landmarks: for hand_landmarks in results.multi_hand_landmarks: print('hand_landmarks:', hand_landmarks) # 关键点可视化 mp_drawing.draw_landmarks( frame, hand_landmarks, mp_hands.HAND_CONNECTIONS) cv2.imshow('MediaPipe Hands', frame) if cv2.waitKey(1) & 0xFF == 27: break cap.release()
mp.solutions.drawing_utils是一个绘图模块,将识别到的手部关键点信息绘制道cv2图像中,mp.solutions.drawing_style定义了绘制的风格。
mp.solutions.hands是mediapipe中的手部识别模块,可以通过它调用手部识别的api,然后通过调用mp_hands.Hands初始化手部识别类。
mp_hands.Hands中的参数:
1)static_image_mode=True适用于静态图片的手势识别,Flase适用于视频等动态识别,比较明显的区别是,若识别的手的数量超过了最大值,True时识别的手会在多个手之间不停闪烁,而False时,超出的手不会识别,系统会自动跟踪之前已经识别过的手。默认值为False;
2)max_num_hands用于指定识别手的最大数量。默认值为2;
3)min_detection_confidence 表示最小检测信度,取值为[0.0,1.0]这个值约小越容易识别出手,用时越短,但是识别的准确度就越差。越大识别的越精准,但是响应的时间也会增加。默认值为0.5;
4)min_tracking_confience 表示最小的追踪可信度,越大手部追踪的越准确,相应的响应时间也就越长。默认值为0.5。
Mediapipe姿态识别
import cv2 import mediapipe as mp if __name__ == '__main__': mp_pose = mp.solutions.pose pose = mp_pose.Pose(static_image_mode=True, model_complexity=1, smooth_landmarks=True, # enable_segmentation=True, min_detection_confidence=0.5, min_tracking_confidence=0.5) drawing = mp.solutions.drawing_utils # read img BGR to RGB img = cv2.imread("1.jpg") img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) cv2.imshow("input", img) results = pose.process(img) drawing.draw_landmarks(img, results.pose_landmarks, mp_pose.POSE_CONNECTIONS) cv2.imshow("keypoint", img) drawing.plot_landmarks(results.pose_world_landmarks, mp_pose.POSE_CONNECTIONS) cv2.waitKey(0) cv2.destroyAllWindows()
mp_pose.Pose()其参数:
1)static_image_mode:静态图像还是连续帧视频;
2)model_complexity:人体姿态估计模型,0表示速度最快,精度最低(三者之中),1表示速度中间,精度中间(三者之中),2表示速度最慢,精度最高(三者之中);
3)smooth_landmarks:是否平滑关键点;
4)enable_segmentation:是否对人体进行抠图;
5)min_detection_confidence:检测置信度阈值;
6)min_tracking_confidence:各帧之间跟踪置信度阈值;
————————————————
原文链接:https://blog.csdn.net/mzl_18353516147/article/details/135717517