前提・実現したいこと
Openposeを利用しています。
jsonファイルとして出力されたデータをcsvとして整形し、解析をしたいです。
発生している問題・エラーメッセージ
jsonファイルをcsvファイルに整形しましたが、出てきたデータが元のデータと異なってしまいます。
入力したデータ
{"version":1.2,"people":[{"pose_keypoints_2d": [607.999,476.911,0.816635,655.268,571.594,0.862697,540.058,560.921,0.849626,518.767,733.718,0.903921,476.951,890.834,0.837659,775.781,602.601,0.822461,775.982,812.565,0.856365,765.25,985.312,0.911167,607.936,906.613,0.718905,534.765,896.152,0.676373,471.73,1189.44,0.755163,362.115,1472.29,0.789471,681.462,917.147,0.676364,629.089,1226.17,0.70003,602.946,1446.07,0.896496,581.898,435.272,0.757696,639.494,435.333,0.743821,555.803,429.939,0.121278,692.001,435.28,0.76239,555.729,1535.17,0.854017,602.586,1535.19,0.853378,602.7,1456.59,0.697083,278.083,1467.02,0.706469,273.077,1451.43,0.780069,372.448,1509.06,0.780327], "face_keypoints_2d":[],"hand_left_keypoints_2d":[],"hand_right_keypoints_2d":[],"pose_keypoints_3d":[],"face_keypoints_3d":[],"hand_left_keypoints_3d":[],"hand_right_keypoints_3d":[]}]}
出てきたデータ(/frame_data)
person0 608.118,471.851,0.865448, 655.278,581.937,0.843845, 539.935,566.049,0.867245, 518.735,744.297,0.830558, 471.961,896.112,0.811827, 775.873,602.869,0.832397, 801.773,817.442,0.821503, 791.439,985.439,0.836332, 607.916,922.345,0.699928, 529.72,906.58,0.680761, 466.616,1194.82,0.75059 361.876,1472.24,0.796895, 681.484,937.898,0.682566, 628.963,1231.56,0.72671, 603.057,1445.98,0.900871, 582.007,435.21,0.818033, 644.552,435.249,0.844008, 560.676,435.099,0.17378, 692.157,435.35,0.771408, 561.053,1540.48,0.85584, 602.955,1535.29,0.842224, 602.655,1451.32,0.737746, 382.774,1608.47,0.76988, 351.205,1592.76,0.690698, 356.691,1482.76,0.70357,
出てきてほしいデータ(/frame_data)
person0 607.999,476.911,0.816635 655.268,571.594,0.862697 540.058,560.921,0.849626 518.767,733.718,0.903921 476.951,890.834,0.837659 ...
jsonコードの数値をそのまま3*25のcsv構造にしたものを得たいです。
jsonデータが1,2,3,4,5,6,...となっているものを
1,2,3,
4,5,6,
とcsvに変換したいのですが、
出てきた数値が
1.1, 2.2, 3.3,
4.4, 5.5, 6.6,
,,,
という具合で不規則に異なる値が出ています。
該当のソースコード
Python
1import json 2import numpy as np 3import os 4 5PROJECTNAME = 'legtest' \ 6 '' 7PROJECTPATH = '/home/deepstation/openpose/my_project/' 8JSONFOLDERPATH = PROJECTPATH + PROJECTNAME + '/result/' 9 10files = os.listdir(JSONFOLDERPATH) 11file_num = 1 12 13MAIN_DIRECTORYNAME = './' + PROJECTNAME + '/' 14FRAME_DIRECTORYNAME = './' + PROJECTNAME + '/frame_data/' 15BODYPARTS_DIRECTORYNAME = './' + PROJECTNAME + '/parts_data/' 16 17if not os.path.exists(MAIN_DIRECTORYNAME): 18 os.mkdir(MAIN_DIRECTORYNAME) 19 os.mkdir(FRAME_DIRECTORYNAME) 20 os.mkdir(BODYPARTS_DIRECTORYNAME) 21 22body_parts_list = [] 23for i in range(25): 24 part = [] 25 body_parts_list.append(part) 26 27 28for filename in files: 29 output_file_name = FRAME_DIRECTORYNAME + str(file_num) + '.txt' 30 with open(output_file_name, mode='wt') as output_file: 31 with open(JSONFOLDERPATH + filename, 'r') as f: 32 data = json.load(f) 33 personID = 0 34 for d in data['people']: 35 output_file.write('person' + str(personID) + '\n') 36 kpt = np.array(d['pose_keypoints_2d']).reshape((25, 3)) 37 parts_num = 0 38 for p in kpt: 39 if personID == 0: 40 body_parts_list[parts_num].append(p) 41 for elem in p: 42 output_file.write(str(elem) + ' ') 43 output_file.write('\n') 44 parts_num += 1 45 output_file.write('\n') 46 personID += 1 47 file_num += 1 48 49 50elemID = 0 51for body_elem_array in body_parts_list: 52 output_file_name = BODYPARTS_DIRECTORYNAME + str(elemID) + '.txt' 53 with open(output_file_name, mode='wt') as output_file: 54 print(elemID) 55 for elem in body_elem_array: 56 print(elem) 57 for e in elem: 58 output_file.write(str(e) + ' ') 59 output_file.write('\n') 60 elemID += 1
試したこと
別時間のデータを参照してるのかと考えましたが、最初のフレームと最後のフレームでも数値は異なりました。
補足情報(FW/ツールのバージョンなど)
Python3.4
Pycharm
Ubuntu14.04
回答2件
あなたの回答
tips
プレビュー