几分钟就能搭建好的单人姿态估计平台

简介: 几分钟就能搭建好的单人姿态估计平台

1dc618a0ed9580ce8bfa6facb208c08f.png

前言


       现在在姿态估计这一方面,OpenPose和Alphapose独领风骚,在多人姿态估计的领域发光。但两者环境配置对于初学者来讲非常的不友好,并且需要一定的硬件支持。这对于一些小伙伴只是想要进行单人姿态估计来讲,没有必要。  所以,今天我们就来介绍一个1分钟就能搭建的单人姿态估计平台的方法,并且介绍一个非常好用的计算机视觉库cvzone,希望对大家能有帮助!


cvzone资料


github:https://github.com/cvzone


class:https://www.computervision.zone/


cvzone安装


我们只需要简单的在终端输入以下的命令,就能够成功安装好用的cvzone啦!


pip install cvzone -i https://pypi.mirrors.ustc.edu.cn/simple/

当然,opencv_python也是必不可少的:


pip install opencv_python -i https://pypi.mirrors.ustc.edu.cn/simple/

还有mediapipe:


pip install mediapipe -i https://pypi.mirrors.ustc.edu.cn/simple/


Pose Estimation使用实例:


演示:


1dc618a0ed9580ce8bfa6facb208c08f.png


Code:

       第一个函数preprocessing_picture用于处理单个图片,当然所谓之处理视频,其实也就是处理连续的多张图片,所以简单的加了第二个demo函数便也可以处理视频了!


import json
import os
from cvzone.PoseModule import PoseDetector
import cv2
def preprocessing_picture(img, read_frame):
    # 关节点检测器
    detector = PoseDetector()
    # 存放关节点信息
    pose_dict = {}
    # 检测
    img = detector.findPose(img)
    lmList, bboxInfo = detector.findPosition(img, bboxWithHands=False)
    # 如果检测到人体关节点
    if bboxInfo:
        center = bboxInfo["center"]
        cv2.circle(img, center, 5, (255, 0, 255), cv2.FILLED)
        for lm in lmList:
            pose_dict[lm[0]] = (lm[1], lm[2])
        if not os.path.exists('result'):
            os.path.makedirs('result')
        jsonFile_name = 'result/{}帧'.format(read_frame) + '.json'
        json_file = open(jsonFile_name, 'w')
        json_data = json.dumps(pose_dict)
        json_file.write(json_data)
        json_file.write('\n')
        json_file.close()
    else:
        return False
    return True
def demo(video_path):
    # 获取视频
    cap = cv2.VideoCapture(video_path)
    isopen = cap.isOpend()
    if not isopen:
        print("Err: Video is failure. Exiting ...")
    # 视频时长总帧数
    total_frame = cap.get(cv2.CAP_PROP_FRAME_COUNT)
    # 帧数计数器
    read_frame = 0
    while (isopen):
        # 读取帧图像
        ret, frame = cap.read()
        # 读取错误处理
        if not ret:
            if read_frame < total_frame:
                # 读取错误
                print("Err: Can't receive frame. Exiting ...")
            else:
                # 正常结束
                print("Info: Stream is End")
            break
        # 帧数计数器+1
        read_frame = read_frame + 1
        # 处理
        result = preprocessing_picture(frame, read_frame)
        if not result:
            print('第{}帧图像中没有检测到人体关节点!'.format(read_frame))
# 使用案例
if __name__ == '__main__':
    video_path = r''
    demo(video_path)


关节点参考图片:


5d4c6812c8535adbb050f4ddf2e1bce8.png

相关文章
|
机器学习/深度学习 数据采集 算法
Machine Learning机器学习之随机森林(Random Forests)
Machine Learning机器学习之随机森林(Random Forests)
|
安全 Java 开发者
丢失的8小时去哪里了?SimpleDateFormat线程不安全,多线程初始化异常解决方案
丢失的8小时去哪里了?SimpleDateFormat线程不安全,多线程初始化异常解决方案
196 0
|
机器学习/深度学习 PyTorch 算法框架/工具
【python-Unet】计算机视觉~舌象舌头图片分割~机器学习(三)
【python-Unet】计算机视觉~舌象舌头图片分割~机器学习(三)
1027 0
|
10月前
|
机器学习/深度学习 数据采集 传感器
基于深度学习的图像识别技术在自动驾驶中的应用研究####
本文旨在探讨深度学习技术,特别是卷积神经网络(CNN)在自动驾驶车辆图像识别领域的应用与进展。通过分析当前自动驾驶技术面临的挑战,详细介绍了深度学习模型如何提升环境感知能力,重点阐述了数据预处理、网络架构设计、训练策略及优化方法,并展望了未来发展趋势。 ####
380 6
心理健康管理系统 【毕业设计系统】
这篇文章介绍了一个心理健康管理系统的毕业设计项目,展示了系统的功能分布、登录注册界面以及不同用户角色的后台管理界面,并提供了技术栈和效果截图。
心理健康管理系统 【毕业设计系统】
|
数据采集 JSON 数据格式
Python大麦网演唱会数据爬取
Python大麦网演唱会数据爬取
789 0
|
存储 Prometheus 并行计算
10倍性能提升-SLS Prometheus 时序存储技术演进
本文将介绍近期SLS Prometheus存储引擎的技术更新,在兼容 PromQL 的基础上实现 10 倍以上的性能提升。同时技术升级带来的成本红利也将回馈给使用SLS 时序引擎的上万内外部客户。
158855 7
|
缓存 负载均衡 算法
|
Linux API SoC
linux系统中内存分配常见函数的分析与实现
linux系统中内存分配常见函数的分析与实现
258 0
|
机器学习/深度学习 存储 编解码
Resnet图像识别入门—— 图像的色彩空间
了解 图像的色彩空间会让你对像素有更多的认识。
Resnet图像识别入门—— 图像的色彩空间