如何通过Python+OpenCV实现姿态估计?


    什么是OpenCV?
    计算机视觉是一个能够理解图像和视频如何存储和操作的过程,它还有助于从图像或视频中检索数据。计算机视觉是人工智能的一部分。计算机视觉在自动驾驶汽车,物体检测,机器人技术,物体跟踪等方面发挥着重要作用。
    OpenCV
    OpenCV是一个开放源代码库,主要用于计算机视觉,图像处理和机器学习。通过OpenCV,它可以为实时数据提供更好的输出,我们可以处理图像和视频,以便实现的算法能够识别诸如汽车,交通信号灯,车牌等物体以及人脸,或者甚至是人类的笔迹。借助其他数据分析库,OpenCV能够根据自己的需求处理图像和视频。
    我们将与OpenCV-python一起使用的库是Mediapipe
    什么是Mediapipe?
    Mediapipe是主要用于构建多模式音频,视频或任何时间序列数据的框架。借助MediaPipe框架,可以构建令人印象深刻的ML管道,例如TensorFlow,TFLite等推理模型以及媒体处理功能。
    使用Mediapipe的最先进的ML模型
    人脸检测
    多手跟踪
    头发分割
    目标检测与追踪
    Objectron:3D对象检测和跟踪
    AutoFlip:自动视频裁剪管道姿态估计
    姿态估计
    通过视频或实时馈送进行人体姿态估计在诸如全身手势控制,量化体育锻炼和手语识别等各个领域中发挥着至关重要的作用。例如,它可用作健身,瑜伽和舞蹈应用程序的基本模型。它在增强现实中找到了自己的主要作用。Media Pipe Pose是用于高保真人体姿势跟踪的框架,该框架从RGB视频帧获取输入并推断出整个人类的33个3D界标。当前最先进的方法主要依靠强大的桌面环境进行推理,而此方法优于其他方法,并且可以实时获得很好的结果。
    姿势地标模型
    
    现在开始
    首先,安装所有必需的库。– pip install OpenCV-python– pip install mediapipe下载任何类型的视频,例如跳舞,跑步等。我们将利用这些视频进行姿势估计。
    为了检查mediapipe是否正常工作,我们将使用上面下载的视频实现一个小的代码。
    import cv2
    import mediapipe as mp
    import time
    mpPose = mp.solutions.pose
    pose = mpPose.Pose()
    mpDraw = mp.solutions.drawing_utils
    #cap = cv2.VideoCapture(0)
    cap = cv2.VideoCapture('a.mp4')
    pTime = 0
    while True:
    success, img = cap.read()
    imgRGB = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
    results = pose.process(imgRGB)
    print(results.pose_landmarks)
    if results.pose_landmarks:
    mpDraw.draw_landmarks(img, results.pose_landmarks, mpPose.POSE_CONNECTIONS)
    for id, lm in enumerate(results.pose_landmarks.landmark):
    h, w,c = img.shape
    print(id, lm)
    cx, cy = int(lm.x*w), int(lm.y*h)
    cv2.circle(img, (cx, cy), 5, (255,0,0), cv2.FILLED)
    cTime = time.time()
    fps = 1/(cTime-pTime)
    pTime = cTime
    cv2.putText(img, str(int(fps)), (50,50), cv2.FONT_HERSHEY_SIMPLEX,1,(255,0,0), 3)
    cv2.imshow("Image", img)
    cv2.waitKey(1)
    
    
    1  2  下一页>