2d关键点可视化 coco转h36m人体关键点

本文介绍了如何将COCO数据集的关键点转换为H36M格式,并使用OpenCV进行2D关键点可视化,展示了如何处理关键点数据并生成带有标签的人体图像。
摘要由CSDN通过智能技术生成

目录

h36m人体关键点示意图:

human3.6m可视化

coco转h36m人体关键点

opencv 2d关键点可视化


h36m人体关键点示意图:

序号数据集标注顺序关节名中文名
00hip臀部
11rhip右臀部
22rknee右膝盖
33rfoot右脚踝
46lhip左臀部
57lknee左膝盖
68lfoot左脚踝
712spine脊柱
813thorax胸部
914neck颈部
1015head头部
1117lshoulder左肩
1218lelbow左手肘
1319lwrist左手腕
1425rshoulder右肩
1526relbow右手肘
1627rwrist右手腕

human3.6m可视化

joint_name={
'Hips(髋部)': 0,
'RightUpLeg(右大腿)': 1,
'RightLeg(右小腿)': 2,
'RightFoot(右脚)': 3,
'LeftUpLeg(左大腿)': 4,
'LeftLeg(左小腿)': 5,
'LeftFoot(左脚)': 6,
'Spine(脊柱)': 7,
'Spine1(脊柱1)': 8,
'Neck(颈部)': 9,
'Neck1(颈部1)': 10,
'LeftArm(左臂)': 11,
'LeftForeArm(左前臂)': 12,
'LeftHand(左手)': 13,
'RightArm(右臂)': 14,
'RightForeArm(右前臂)': 15,
'RightHand(右手)': 16
}

https://github.com/gauraviiita/Visualization-of-Human3.6M-Dataset/

coco转h36m人体关键点

mhformer中有

def h36m_coco_format(keypoints, scores):
    assert len(keypoints.shape) == 4 and len(scores.shape) == 3

    h36m_kpts = []
    h36m_scores = []
    valid_frames = []

    for i in range(keypoints.shape[0]):
        kpts = keypoints[i]
        score = scores[i]

        new_score = np.zeros_like(score, dtype=np.float32)

        if np.sum(kpts) != 0.:
            kpts, valid_frame = coco_h36m(kpts)
            h36m_kpts.append(kpts)
            valid_frames.append(valid_frame)

            new_score[:, h36m_coco_order] = score[:, coco_order]
            new_score[:, 0] = np.mean(score[:, [11, 12]], axis=1, dtype=np.float32)
            new_score[:, 8] = np.mean(score[:, [5, 6]], axis=1, dtype=np.float32)
            new_score[:, 7] = np.mean(new_score[:, [0, 8]], axis=1, dtype=np.float32)
            new_score[:, 10] = np.mean(score[:, [1, 2, 3, 4]], axis=1, dtype=np.float32)

            h36m_scores.append(new_score)

    h36m_kpts = np.asarray(h36m_kpts, dtype=np.float32)
    h36m_scores = np.asarray(h36m_scores, dtype=np.float32)

    return h36m_kpts, h36m_scores, valid_frames

opencv 2d关键点可视化

import numpy as np


import cv2
import numpy as np
import json


kpt_color_map = {'h': {'id': 0, 'color': [255, 0, 0], 'radius': 3, 'thickness': -1}, 'tail': {'id': 1, 'color': [0, 255, 0], 'radius': 2, 'thickness': -1}}

# 点类别文字
kpt_labelstr = {'font_size': 1,  # 字体大小
    'font_thickness': 3,  # 字体粗细
    'offset_x': 20,  # X 方向,文字偏移距离,向右为正
    'offset_y': 10,  # Y 方向,文字偏移距离,向下为正
}

labelme_path = r'E:\data\new_path\635_5225_02-1\input\0000.json'
with open(labelme_path, 'r', encoding='utf-8') as f:
    labelme = json.load(f)

img_bgr=cv2.imread(r'E:\data\new_path\635_5225_02-1\input\0000.png')

for each_ann in labelme['shapes']:  # 遍历每一个标注


    kpt_label = each_ann['label']  # 该点的类别

    for point in each_ann['points']:
        kpt_xy = point
        kpt_x, kpt_y = int(kpt_xy[0]), int(kpt_xy[1])

        # 该点的可视化配置
        kpt_color = kpt_color_map[kpt_label]['color']  # 颜色
        kpt_radius = kpt_color_map[kpt_label]['radius']  # 半径
        kpt_thickness = kpt_color_map[kpt_label]['thickness']  # 线宽(-1代表填充)

        # 画圆:画该关键点
        img_bgr = cv2.circle(img_bgr, (kpt_x, kpt_y), kpt_radius, kpt_color, kpt_thickness)

        # 写该点类别文字:图片,文字字符串,文字左上角坐标,字体,字体大小,颜色,字体粗细
        img_bgr = cv2.putText(img_bgr, kpt_label, (kpt_x + kpt_labelstr['offset_x'], kpt_y + kpt_labelstr['offset_y']), cv2.FONT_HERSHEY_SIMPLEX, kpt_labelstr['font_size'], kpt_color, kpt_labelstr['font_thickness'])

cv2.imshow('img',img_bgr)
cv2.waitKey(0)

  • 13
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: data_2d_h36m_cpn_ft_h36m_dbb.npz是一个数据文件,其中包含了二维的人体姿势数据。这些数据是使用CPN-FT_H36M算法从H36M数据库中提取而来的。 CPN-FT_H36M是一种用于人体姿势估计的算法,它基于H36M数据库中的大量人体姿势图片进行训练。通过使用这个算法,我们可以将图像中的人体姿势准确地估计出来,并将其表示为一组二维的关节点坐标。 npz是一种数据文件格式,它可以存储多维数组和相关的元数据。在这个数据文件中,我们可以找到一个名为"data"的数组,它包含了所有二维姿势数据。每一行都代表一个人,每一列代表一个关节点。通过访问数组中的元素,我们可以获得每个关节点在图像中的二维坐标。 使用这些二维姿势数据,我们可以进行各种分析和研究,比如人体姿势识别、动作识别等。还可以将这些数据应用于深度学习模型的训练,进一步改进人体姿势估计算法的准确性。总之,data_2d_h36m_cpn_ft_h36m_dbb.npz是一个非常有价值的数据文件,可以用于人体姿势相关的研究和应用。 ### 回答2: data_2d_h36m_cpn_ft_h36m_dbb.npz是一个包含2D人体关键点数据集的文件。这个数据集是在H36M数据集的基础上经过处理而得到的,用于训练CPN-FT模型。CPN-FT是一种用于姿态估计的神经网络模型。 在这个数据集中,存储了很多个姿态序列的关键点数据。关键点是指人体在图像中特定位置的点,用于描述人体的姿态信息。每个关键点具有x和y坐标,表示在图像中的位置。 数据集中的每个姿态序列都对应一个关键点序列,这个序列是按照时间顺序存储的。通过分析关键点序列,我们可以了解每个姿态在不同时间点的变化情况。 将这些2D关键点数据存储在npz文件格式中,有助于存储和访问数据。npz文件是一种numpy保存多个数组的文件格式,它可以方便地通过Python的numpy库进行读取和处理。 通过访问data_2d_h36m_cpn_ft_h36m_dbb.npz文件,我们可以获取到这些关键点数据,并且可以用于不同的任务,比如姿态估计、动作识别等。这个数据集的存在,为研究人体姿态提供了宝贵的资源,可以用于改进姿态估计算法的性能。 ### 回答3: data_2d_h36m_cpn_ft_h36m_dbb.npz是一个数据文件,以npz格式存储。该文件包含的数据与2D人体姿势相关,并且是使用CPN-FT网络从H36M数据库中生成的。 H36M数据库是一个经过标注的人体姿势数据库,包含来自4个摄像机的视频序列。这个数据文件中的数据是在这些视频序列上进行了二维姿势估计的结果。 文件中的数据是以数组的形式存储的,可以通过使用Python中的Numpy库读取和处理。它包含了每个摄像机视角下的姿势估计结果,以及与H36M数据库对应的人的标签信息。 通过这个数据文件,我们可以获得关于人体姿势的信息,例如关节的位置和角度。这对于人体动作分析、姿势研究或者运动捕捉应用非常有用。 总结来说,data_2d_h36m_cpn_ft_h36m_dbb.npz是一个包含了从H36M数据库中使用CPN-FT网络生成的二维人体姿势估计结果的数据文件。它提供了关于人体姿势的详细信息,可以用于各种人体动作相关的研究和应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI算法网奇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值