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

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

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

相关文章
|
6天前
|
机器学习/深度学习 自然语言处理 搜索推荐
手机上0.2秒出图、当前速度之最,谷歌打造超快扩散模型MobileDiffusion
【2月更文挑战第17天】手机上0.2秒出图、当前速度之最,谷歌打造超快扩散模型MobileDiffusion
30 2
手机上0.2秒出图、当前速度之最,谷歌打造超快扩散模型MobileDiffusion
|
10月前
测量学:水准和导线测量实验报告+详细解析
测量学:水准和导线测量实验报告+详细解析
242 0
|
6天前
|
人工智能 算法 TensorFlow
基于AidLux的工业视觉少样本缺陷检测实战
基于AidLux的工业视觉少样本缺陷检测实战
40 0
|
6天前
|
运维 算法 数据处理
|
11月前
|
机器学习/深度学习 存储 人工智能
【OpenVI-视觉评价系列之MOS评价实战篇】手机存储不够用,清理照片太痛苦?MOS评价帮你挑选“垃圾”照片
MOS(Mean Opinion Score)是一种常用的主观质量评价方法,常用于视频、图像等多媒体领域中的质量评价。MOS视觉评价通常是通过让受试者观看视频/图像,对视频的清晰度、锐度、颜色饱和度、运动模糊、噪声等方面进行评价。然而,MOS视觉评价也存在一些局限,例如需要大量的受试者,评估时间较长等。因此,近年来,研究者们也开始探索使用客观评价方法来替代或补充MOS视觉评价。
350 2
【OpenVI-视觉评价系列之MOS评价实战篇】手机存储不够用,清理照片太痛苦?MOS评价帮你挑选“垃圾”照片
|
11月前
|
安全 内存技术
(5)首次飞行和调校
(5)首次飞行和调校
105 0
|
12月前
|
安全 算法 计算机视觉
项目实践 | 基于YOLO-V5实现行人社交距离风险提示(文末获取完整源码)(二)
项目实践 | 基于YOLO-V5实现行人社交距离风险提示(文末获取完整源码)(二)
85 0
|
12月前
|
算法 Go 计算机视觉
项目实践 | 基于YOLO-V5实现行人社交距离风险提示(文末获取完整源码)(一)
项目实践 | 基于YOLO-V5实现行人社交距离风险提示(文末获取完整源码)(一)
213 0
|
机器学习/深度学习 人工智能 编解码
照片也能时间旅行?「穿越时空的人脸」新模型化身AI时光机
照片也能时间旅行?「穿越时空的人脸」新模型化身AI时光机
180 0
利用AidLux实现热成像电力巡检项目操作演示
本项目参考AidLux五月实战训练营内容:基于热成像的巡检及AidLux工程方案。利用AIdlux平台和手机移动端算力,轻松落地部署基于热成像智能巡检项目。