diff options
| author | Jon Whiteaker <jbw@berkeley.edu> | 2012-02-15 11:42:35 -0800 |
|---|---|---|
| committer | Jon Whiteaker <jbw@berkeley.edu> | 2012-02-15 11:42:35 -0800 |
| commit | 87dcc50bc1f777b63f5956286d94d3ea8b9592a6 (patch) | |
| tree | 5fb996b780e7dba3cfc51db3f50252ebb5697a93 /data/limbs.py | |
| parent | c58338dad01019cfa753c446c22dd6aa0e479838 (diff) | |
| download | kinect-87dcc50bc1f777b63f5956286d94d3ea8b9592a6.tar.gz | |
adding data+code to git repo
Diffstat (limited to 'data/limbs.py')
| -rwxr-xr-x | data/limbs.py | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/data/limbs.py b/data/limbs.py new file mode 100755 index 0000000..61794ec --- /dev/null +++ b/data/limbs.py @@ -0,0 +1,62 @@ +#!/usr/bin/python + +import sys +import math +import pickle + +sk_file = open(sys.argv[1]) +out_dir = sys.argv[1][0:sys.argv[1].rfind('/')+1] +labels = [] +for f in sys.argv[2:]: + labels += [pickle.load(open(f))] +flabel = labels[0] +for label in labels: + for run in label: + if label[run] != flabel[run] or label[run] == '?' or label[run] == 'None': + flabel[run] = 'None' + +pframe = 0 +vals = {} +data = {} +limbs = (('Head','ShoulderCenter'),\ + ('ShoulderCenter','ShoulderLeft'),('ShoulderLeft','ElbowLeft'),('ElbowLeft','WristLeft'),\ + ('ShoulderCenter','ShoulderRight'),('ShoulderRight','ElbowRight'),('ElbowRight','WristRight'),\ + ('ShoulderCenter','Spine'),('Spine','HipCenter'),\ + ('HipCenter','HipLeft'),('HipLeft','KneeLeft'),('KneeLeft','AnkleLeft'),\ + ('HipCenter','HipRight'),('HipRight','KneeRight'),('KneeRight','AnkleRight')) +xlabels = ('h-sc','sc-sl','sl-el','el-wl','sc-sr','sr-er','er-wr','sc-s','s-hc','hc-hl','hl-kl','kl-al','hc-hr','hr-kr','kr-ar') +print '# '+','.join(['name','run','frame','z-value']+list(xlabels)) + + +for line in sk_file: + run, frame, nid, joint, state, x, y, z, X, Y = line.strip().split(',') + if frame != 'Frame': + run = int(run) + frame = int(frame) + if frame != pframe and vals != {} and run in flabel and flabel[run] != 'None': + out = [] + zv = [] + for l in range(len(limbs)): + j1, j2 = limbs[l] + if j1 in vals and j2 in vals: + dx = vals[j1][0] - vals[j2][0] + dy = vals[j1][1] - vals[j2][1] + dz = vals[j1][2] - vals[j2][2] + limb = math.sqrt(dx*dx + dy*dy + dz*dz) + out += [str(limb)] + zv += [(vals[j1][2] + vals[j2][2])/2] + #dist = math.fabs((dz + 2*vals[j2][2])/2) + #if limb < 1000 and limb > 100: + #X += [dist] + #data[name][l] += [limb] + #print str(dist) + " " + str(limb) + #print str(dist) + "\t" + str(limb) + else: + out += ['?'] + if len(zv) >= 1: + print ','.join([flabel[run],str(run),str(frame),str(sum(zv)/len(zv))] + out) + vals = {} + if state == 'Tracked': + vals[joint] = [float(x), float(y), float(z)] + pframe = frame + |
