下载地址:http://sam.johnson.io/research/
该数据集有两个类型,一个是聚焦单独人体,一个是包含人体所在环境的,根据需求下载
Leeds Sports Pose 是一个体育姿势数据集,其被分为竞技、羽毛球、棒球、体操、跑酷、足球、排球和网球几类,共包含约 2000 个姿势注释,图像均来自于 Flickr 的运动人员。
每张图像均为3通道的彩色图像,其像素的行范围为:[64,202],列范围为:[57,202],并且每个图像都注有 14 个关节位置,其左侧和右侧关节始终以人为中心进行标记
1-14分别为: Right ankle、Right knee、Right hip、Left hip、Left knee、Left ankle、Right wrist、Right elbow、Right、shoulder、Left shoulder、Left elbow、Left wrist、Neck、Head top
数据集解析:
import glob
import os
from scipy.io import loadmat
import numpy as np
from PIL import Image
import cv2
colors = [(50, 0, 0), (100, 0, 0), (150, 0, 0), (200, 0, 0), (250, 0, 0), (0, 50, 0), (0, 100, 0),(0, 150, 0), (0, 200, 0),(0, 250, 0), (0, 0, 50), (0, 0, 100), (0, 0, 150), (0, 0, 200), (0, 0, 250), (50, 50, 50)]
def save_joints(mat_path,image_path,save_path,vis_save_path):
"""
mat_path 是 lsp数据集mat文件所在地址,包含mat文件名
image_path 是 lsp数据集图像的地址,不包含图像名
save_path 是 要将lsp数据集中关键点保存的地址名
vis_save_path是 可视化关键点保存的地址名
lsp数据集共2000张图片
"""
joints = loadmat(mat_path)
joints = joints["joints"].transpose(2,0,1)
joints = joints[:,:2,:]
num = 0
for img_path in glob.glob("%s/*.jpg" %image_path):
img_name = img_path.split("\\")[-1]
vissavepath = vis_save_path + img_name
img = Image.open(img_path)
img = np.array(img,dtype=np.uint8)
img = cv2.cvtColor(img,cv2.COLOR_RGB2BGR)
cen_points = joints[num,...]
points_num = cen_points.shape[-1]
point_dict = {}
for points_ in range(points_num):
point_x = cen_points[0,points_]
point_y = cen_points[1,points_]
point_dict[str(points_)] = [int(point_x),int(point_y)]
img1 = cv2.circle(img, (int(point_x), int(point_y)), 5, colors[points_],
thickness=-1)
img1 = cv2.putText(img, str(points_),
(int(point_x) + 10, int(point_y)),
cv2.FONT_HERSHEY_SIMPLEX, 1, colors[points_], 1)
with open(os.path.join(save_path,img_name.split(".")[0]+".txt"),"w") as img_txt:
img_txt.write(str(point_dict))
img_txt.close()
num += 1
# 若不想看图片中关键点的位置是否准确,请注释掉后面两行
# cv2.imshow("img",img)
# cv2.waitKey()
cv2.imwrite(vissavepath, img)
mat_path = r'E:\lap\lsp_dataset_original\joints.mat'
image_path = r'E:\lap\lsp_dataset_original\images'
save_path = r'E:\lap\lsp_dataset_original\txt'
vis_save_path =r'E:\lap\lsp_dataset_original\vis\\'
save_joints(mat_path,image_path,save_path,vis_save_path)
全场景:
单独人体:
参考:https://blog.csdn.net/weixin_44743827/article/details/123523924