根据我的任务,我需要输出数组,它返回一个17x2矩阵。样本输出如下所示,
[[[112.7389984 435.22939381]
[105.58624109 442.22496105]
[105.40821313 428.48843217]
[111.54160163 455.5956664 ]
[111.73701629 422.6852232 ]
[157.57940773 468.98824122]
[152.69650377 418.14950772]
[216.09577598 494.46142991]
[216.24983383 398.55651579]
[187.72555422 470.64766974]
[195.02623991 401.41814955]
[250.42257518 456.73815289]
[254.02587076 414.79482611]
[342.11166065 465.78956559]
[337.49021309 398.70648202]
[420.26860336 483.16769808]
[413.13895387 400.20868124]]
必须更新此输出并重新排列为json格式,该格式充当另一个模块的输入。示例json
文件如下所示
"people": [{"pose_keypoints_2d": [373.66941223936897, 154.11017137748198, 376.56976806799094, 148.62508032371454, 380.12147964285106, 146.7658045737609, 408.1720184452102, 150.81495177498203, 395.4577760498318, 148.65305484579298, 429.2950931571711, 187.23194235510218, 427.43709937755006, 183.81666234409775, 438.86293520488795, 242.28969041954517, 406.0761933264817, 239.55742403024738, 391.300993933522, 275.09581687542385, 366.366300313692, 273.31374397263687, 437.8343750984803, 266.7701811748018, 413.9231729479147, 269.37950168236074, 427.40363975660733, 334.6826900855724, 391.21232291711186, 334.43577344764236, 471.9465081925208, 373.23237206886364, 393.9988229904401, 372.1616302399678, 0.0, 0.0]}]}
基本上结构应该是顺序
"people": [{"pose_keypoints_2d": [x0,y0,x1,y1, x35,y35 ]}]}
对于数组我可以创建类似的东西
dc = {"people":[]}
flat = [0.0 for i in range(36)]
这基本上是一维矢量。我试图连续填充向量(x0,y0,x1,y1 ......)。我认为在matlab中有一个内置命令来做到这一点。我正在调查命令enumerate
,但我不确定这是否是解决它的方法?
这里有一些游乐场:运行,更新并看看你能做什么:
import numpy as np
import json
#Creating 17x2 matrix
my_matrix = np.random.rand(17,2)
print(my_matrix)
print(my_matrix.shape)
print("------------------------------")
#Creating output format (Creating dictionary)
my_dict = {}
new_dict = {}
my_dict["pose_keypoints_2d"] = my_matrix
new_dict['people'] = my_dict
print(new_dict)
print("------------------------------")
# Creating json
json_data = json.dumps(new_dict['people']["pose_keypoints_2d"].tolist())
print(type(json_data))
print(json_data)
print("------------------------------")
#Now reverse, json to numpy array matrix
data = json.loads(json_data)
numpy_matrix = np.reshape(data,(17,2))
print(numpy_matrix)
这应该可以解决问题。相应地定义你的dict,然后通过列表理解迭代你的矩阵
dct = {'people':[{"pose_keypoints_2d": []}]}
dct['people'][0]["pose_keypoints_2d"] = [val[0] for val in matrix[0]]
print(dct)
#{'people': [{'pose_keypoints_2d': [112.7389984, 105.58624109,
# 105.40821313, #111.54160163, 111.73701629, 157.57940773,
#152.69650377, 216.09577598, #216.24983383, 187.72555422, 195.02623991,
#250.42257518, 254.02587076, #342.11166065, 337.49021309, 420.26860336,
#413.13895387]}]}