以下jsonファイルになります.
{"version":1.3,"people":[{"person_id":[-1],"pose_keypoints_2d":[697.949,94.5086,0.94138,707.771,188.626,0.848754,650.953,186.622,0.811076,633.314,278.739,0.71239,633.262,353.129,0.488111,762.639,192.509,0.823329,776.307,286.508,0.759441,774.344,368.784,0.857891,682.34,376.676,0.637581,645.007,368.791,0.591105,558.818,468.779,0.699771,482.45,554.885,0.64443,725.383,382.537,0.603878,739.041,513.835,0.599071,760.679,621.513,0.671196,690.146,88.7003,0.88057,711.711,86.7748,0.952311,682.239,114.095,0.319907,733.239,114.094,0.925611,762.639,648.948,0.645668,778.303,645.02,0.677848,756.741,631.319,0.429501,494.209,586.314,0.559349,478.536,582.399,0.491725,472.6,558.846,0.350561],"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":[]}]}
var json=`{"version":1.3,"people":[{"person_id":[-1],"pose_keypoints_2d":[ 697.949,94.5086,0.94138, 707.771,188.626,0.848754, 650.953,186.622,0.811076, 633.314,278.739,0.71239, 633.262,353.129,0.488111, 762.639,192.509,0.823329, 776.307,286.508,0.759441, 774.344,368.784,0.857891, 682.34,376.676,0.637581, 645.007,368.791,0.591105, 558.818,468.779,0.699771, 482.45,554.885,0.64443, 725.383,382.537,0.603878, 739.041,513.835,0.599071, 760.679,621.513,0.671196, 690.146,88.7003,0.88057, 711.711,86.7748,0.952311, 682.239,114.095,0.319907, 733.239,114.094,0.925611, 762.639,648.948,0.645668, 778.303,645.02,0.677848, 756.741,631.319,0.429501, 494.209,586.314,0.559349, 478.536,582.399,0.491725, 472.6,558.846,0.350561 ],"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":[]}]}`; var data=JSON.parse(json).people[0].pose_keypoints_2d.map((x,y,z)=>y%3?null:[x,z[y+1],z[y+2]]).filter(x=>x!==null); console.log(data);
var a=JSON.parse(`{"version":1.3,"people":[{"person_id":[-1],"":[697.949,94.5086,0.94138,707.771,188.626,0.848754,650.953,186.622,0.811076,633.314,278.739,0.71239,633.262,353.129,0.488111,762.639,192.509,0.823329,776.307,286.508,0.759441,774.344,368.784,0.857891,682.34,376.676,0.637581,645.007,368.791,0.591105,558.818,468.779,0.699771,482.45,554.885,0.64443,725.383,382.537,0.603878,739.041,513.835,0.599071,760.679,621.513,0.671196,690.146,88.7003,0.88057,711.711,86.7748,0.952311,682.239,114.095,0.319907,733.239,114.094,0.925611,762.639,648.948,0.645668,778.303,645.02,0.677848,756.741,631.319,0.429501,494.209,586.314,0.559349,478.536,582.399,0.491725,472.6,558.846,0.350561],"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":[]}]}`); var b=a.people[0][""]; console.log([b[20],b[21]]); console.log([b[24],b[25]]);
var width=1; var height=Math.sqrt(3);//ルート3 var radian=Math.atan(height/width); var angle=radian*180/Math.PI; console.log(radian); console.log(angle);
openposeで取得した、2dのjson形式のデータとなっています。2dのデータから取得した(x,y,p)座標のデータを用いるため、できればpは使用せず行いたいと思っています。
例)1セット(697.949,94.5086,0.94138),(x,y,p)となっています.
右足首と右尻と左足首と左尻
右尻と右足首と右肩と右手首
左尻と左足首と左肩と左手首
の内角度を求めたいです。
その後3つの条件分岐を行いたいです.
18個の関節位置×3となっています。
54個求められるとされています。
x,y座標のみで角度を求められるようなので,(x,y).参考文献を見たのですがコードを書くことができず,参考文献などありましたら,教えていただきたいです.
どなたか解説いただける方よろしくお願いいたします.
あなたの回答
tips
プレビュー