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

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

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

相关文章
|
Python
『三分钟学分析』Graveyard分析模型是真的牛X!(上)
在上篇品牌知名度实例的基础上,讲一个经典分析模型,对品牌知名度做更立体的分析。
584 0
『三分钟学分析』Graveyard分析模型是真的牛X!(上)
|
18天前
|
机器学习/深度学习 数据采集 消息中间件
使用Python实现智能火山活动监测模型
使用Python实现智能火山活动监测模型
32 1
|
3月前
|
人工智能 自然语言处理 搜索推荐
两分钟“熟读”《国史大纲》,大模型的下一个爆点是“书童”?
年初的大模型之战激发了我们对“读书助理”的构想。多数模型受限于文本长度与理解能力,但在GLM-4-Long出现后迎来转机。该模型支持1M上下文,能一次处理完整本《红楼梦》。我们对其进行了深度测试:以《国史大纲》为例,它不仅能迅速提取核心信息,还能准确回答细节问题,仿佛与作者对话。此外,通过多文档训练,GLM-4-Long甚至能成为特定领域的“知识博主”。这标志着大模型竞争已从单纯追求文本长度转向综合能力的较量,预示着AGI应用的新纪元。
|
4月前
研究上百个小时,高手总结了这份 DALL-E 3 人物连续性公式(上)
研究上百个小时,高手总结了这份 DALL-E 3 人物连续性公式(上)
36 0
|
4月前
|
自然语言处理 前端开发
研究上百个小时,高手总结了这份 DALL-E 3 人物连续性公式(下)
研究上百个小时,高手总结了这份 DALL-E 3 人物连续性公式(下)
33 0
|
4月前
研究上百个小时,高手总结了这份 DALL-E 3 人物连续性公式(中)
研究上百个小时,高手总结了这份 DALL-E 3 人物连续性公式(中)
35 0
|
6月前
|
机器学习/深度学习 自然语言处理 搜索推荐
手机上0.2秒出图、当前速度之最,谷歌打造超快扩散模型MobileDiffusion
【2月更文挑战第17天】手机上0.2秒出图、当前速度之最,谷歌打造超快扩散模型MobileDiffusion
87 2
手机上0.2秒出图、当前速度之最,谷歌打造超快扩散模型MobileDiffusion
|
6月前
|
人工智能 算法 TensorFlow
基于AidLux的工业视觉少样本缺陷检测实战
基于AidLux的工业视觉少样本缺陷检测实战
79 0
|
6月前
|
运维 算法 数据处理
|
机器学习/深度学习 存储 人工智能
【OpenVI-视觉评价系列之MOS评价实战篇】手机存储不够用,清理照片太痛苦?MOS评价帮你挑选“垃圾”照片
MOS(Mean Opinion Score)是一种常用的主观质量评价方法,常用于视频、图像等多媒体领域中的质量评价。MOS视觉评价通常是通过让受试者观看视频/图像,对视频的清晰度、锐度、颜色饱和度、运动模糊、噪声等方面进行评价。然而,MOS视觉评价也存在一些局限,例如需要大量的受试者,评估时间较长等。因此,近年来,研究者们也开始探索使用客观评价方法来替代或补充MOS视觉评价。
506 2
【OpenVI-视觉评价系列之MOS评价实战篇】手机存储不够用,清理照片太痛苦?MOS评价帮你挑选“垃圾”照片