MediaPipe - 03.姿态识别

本系列文章介绍各类图像识别的使用方法,运用这些技巧采集更多的原始数据,训练我们的AI模型。本系列文章要有Python和OpenCV基础。

姿态识别

MediaPipe的人体姿态识别系统也是很强大的,它能从图片中评估出人体姿态的33个基准点位置,从而判定人体当前的姿态。


姿态识别程序

这个程序将从一张照片中识别出人体,并把每个人体在图片中的范围和33个关键点标注出来。mp.solutions.drawing_utils是MediaPipe内置的,强大的绘制工具。

import cv2
import mediapipe as mp
 
def img_ope(file):
 
    mypose= mp.solutions.pose
    pose = mypose.Pose()
    myDraw = mp.solutions.drawing_utils
 
    DrawingSpec_point = myDraw.DrawingSpec((0, 255, 0), 2, 2)
  
    while(True):
        img = cv2.imread(file)
        img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
        results = pose.process(img_rgb)
        
        if (results.pose_landmarks):
 
            #输出33个点的连接关系
            print(mypose.POSE_CONNECTIONS)
            for id,lm in enumerate(results.pose_landmarks.landmark):               
                h,w,c  = img.shape
                cx,cy = int(lm.x*w),int(lm.y*h)
                #输出每个点在图片中的位置
                print (id,cx,cy)
                 
                 
            myDraw.draw_landmarks(img,results.pose_landmarks,mypose.POSE_CONNECTIONS,DrawingSpec_point)
             
               
        cv2.imshow("Frame", img)
        key = cv2.waitKey(1) & 0xFF
 
        if key== ord('q'):
            cv2.waitKey(0)
        if key== 27:
            break
 
    cv2.destroyAllWindows()
 
#------------------------------
if __name__=="__main__":
    file = "body.png"
    img_ope(file)

运行结果

MediaPipe是一个开源的跨平台人工智能开发框架,提供了各种各样的人体姿势、面部表情等识别模块。其中,人体姿势识别模块可以用于识别人体的各种动作,包括站立、行走、跑步、跳跃等。 使用MediaPipe进行人体姿势识别需要安装相关依赖库和模型文件,然后编写Python代码。以下是基本的步骤: 1. 安装依赖库和模型文件: ``` pip install mediapipe opencv-python ``` 2. 导入相关模块: ```python import cv2 import mediapipe as mp ``` 3. 创建人体姿势估计对象: ```python mp_pose = mp.solutions.pose pose = mp_pose.Pose() ``` 4. 加载视频或摄像头: ```python cap = cv2.VideoCapture(0) ``` 5. 循环读取视频帧或摄像头画面: ```python while True: ret, frame = cap.read() if not ret: break ``` 6. 对每一帧进行人体姿势识别: ```python # 将图像从BGR转换为RGB image = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB) # 进行人体姿势识别 results = pose.process(image) ``` 7. 解析识别结果并绘制人体姿势: ```python # 绘制骨架关键点和连线 mp_pose.draw_landmarks(frame, results.pose_landmarks, mp_pose.POSE_CONNECTIONS) ``` 8. 显示识别结果: ```python cv2.imshow('MediaPipe Pose', frame) if cv2.waitKey(1) == 27: break ``` 完整的代码如下: ```python import cv2 import mediapipe as mp mp_pose = mp.solutions.pose pose = mp_pose.Pose() cap = cv2.VideoCapture(0) while True: ret, frame = cap.read() if not ret: break image = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB) results = pose.process(image) mp_pose.draw_landmarks(frame, results.pose_landmarks, mp_pose.POSE_CONNECTIONS) cv2.imshow('MediaPipe Pose', frame) if cv2.waitKey(1) == 27: break cap.release() cv2.destroyAllWindows() ``` 上述代码可以实现实时的人体姿势识别,并在视频或摄像头画面中绘制出骨架关键点和连线。如果想要识别特定的动作,可以根据人体姿势的关键点信息进行判断和分类。例如,如果想要识别站立、行走和跑步三种不同的动作,可以通过检测关键点的变化和速度来实现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值