openposeで歩きたばこの検出をしようとしており、鼻から手首の距離を求めることで、それをしようとしているのですが、人が歩いておくから手前に来たり手前から奥に行ったり、また後ろ姿じゃ測定が難しい状況になってます。この問題を解決する方法はありますか?(全身の腕の比率を調べたい)
Python
1import numpy as np 2import json 3import glob 4import pandas as pd 5import math 6 7if __name__ == '__main__': 8 #jsons_list = sorted(glob.glob('./json_dancing/dancing_000000000000_keypoints.json')) #デバッグ用 9 jsons_list = sorted(glob.glob('./ファイル名/ファイル名_*_keypoints.json')) 10 11 #データを最終的に入れるべきリストを作成する 12 data_x_list=list() 13 data_y_list=list() 14 data_p_list=list() 15 16 for jsons in jsons_list: 17 with open(jsons) as f: 18 data = json.load(f) 19 for d in data['people']: 20 kpt = np.array(d['pose_keypoints_2d']).reshape((-1, 3)) 21 kpt=kpt.T 22 23 data_x=kpt[0,:].reshape(1,25).flatten() 24 data_y=kpt[1,:].reshape(1,25).flatten() 25 data_p=kpt[2,:].reshape(1,25).flatten() 26 #print(data_x) #デバッグ用 27 28 data_x_list.append(data_x) 29 data_y_list.append(data_y) 30 data_p_list.append(data_p) 31 #print(data_x_list) #デバッグ用 32 33 np.savetxt('data_x_list.csv', X=data_x_list, delimiter=",") 34 np.savetxt('data_y_list.csv', X=data_y_list, delimiter=",") 35 np.savetxt('data_p_list.csv', X=data_p_list, delimiter=",") 36 37 csvs_list = sorted(glob.glob('*.csv')) 38 for csvs in csvs_list: 39 dfc = pd.read_csv(csvs, header=None) 40 dfc.columns=['Nose','Neck','RShoulder','RElbow','RWrist','LShoulder','LElbow','LWrist','MidHip','RHip','RKnee','RAnkle','LHip','LKnee','LAnkle','REye','LEye','REar','LEar','LBigToe','LSmallToe','LHeel','RBigToe','RSmallToe','RHeel'] 41 dfc.to_csv(csvs,index=False) 42 43 44 #以下、手首と鼻のkeypoints間の距離を計算するプログラム 45 # 46 d_nose_list = list() #鼻のx,y座標データを格納するリスト 47 d_Lwrist_list = list() #左手首のx,y座標を格納するリスト 48 49 for k in range(len(data_x_list)): 50 print(k) 51 d_nose_list.append([data_x_list[k][0], data_y_list[k][0]]) 52 d_Lwrist_list.append([data_x_list[k][7], data_y_list[k][7]]) 53 54 #左手首と鼻の間のユークリッド距離を計算して、ファイルに保存する 55 dist = list() 56 for k in range(len(d_nose_list)): 57 dist_tmp = (d_nose_list[k][0] - d_Lwrist_list[k][0])**2 + (d_nose_list[k][1] - d_Lwrist_list[k][1])**2 58 dist.append(math.sqrt(dist_tmp)) 59 np.savetxt('data_distance.csv', X=dist, delimiter=",")
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/01/17 01:09