import os from predictAction import predictAction from computeMHI import computeMHI from huMoments import huMoments basedir = './' actions = ['botharms', 'crouch', 'leftarmup', 'punch', 'rightkick'] allMHIs_counter = 0 allMHIs = np.empty((480,640,20), dtype=np.float32) allMoments = np.empty((20,7), dtype=np.float64) for actionnum in range(len(actions)): subdirname = basedir + actions[actionnum] + '/' subdir = os.listdir(subdirname) for seqnum in range(len(subdir)): allMHIs[:,:,allMHIs_counter] = computeMHI(subdirname + subdir[seqnum]) allMoments[allMHIs_counter,:] = huMoments(allMHIs[:,:,allMHIs_counter]) allMHIs_counter += 1 allLabels = [i for i in xrange(1,6) for j in xrange(4)] allLabels = np.array(allLabels) #%% actions = ['botharms', 'crouch', 'leftarmup', 'punch', 'rightkick'] #actions = ['leftarmup'] #trainMHI = np.empty((480,640,20), dtype=np.float32) #trainMHI_counter = 0 np.save("huVectors", allMoments) np.save("allMHIs", allMHIs) allMoments = allMoments/np.linalg.norm(allMoments) confusionMatrix = np.zeros((5,5)) for actionnum in range(len(actions)): subdirname = basedir + actions[actionnum] + '/'
allMHIs_counter = allMHIs_counter + 1 allMHIs[:,:,allMHIs_counter] = computeMHI(subdirname + subdir[seqnum]) cv2.imshow(actions[actionnum]+"- %d"% seqnum, allMHIs[:,:,allMHIs_counter]) # cv2.imshow("mask", motion_mask) if 0xFF & cv2.waitKey(1) == 27: break #cv2.destroyAllWindows() #%% allHuMoments = np.empty((20,7), dtype=np.float32) for i in range(allMHIs.shape[2]): allHuMoments[i,:] = huMoments(allMHIs[:,:,i]) #%% #testMHI = computeMHI("./leftarmup/leftarm-up-p2-1") testMHI = computeMHI("./punch/punch-p1-1") testMoments = huMoments(testMHI) actions = ['botharms', 'crouch', 'leftarmup', 'punch', 'rightkick'] #actions = ['leftarmup'] trainMHI = np.empty((480,640,20), dtype=np.float32) trainMHI_counter = 0 for actionnum in range(len(actions)): subdirname = basedir + actions[actionnum] + '/' subdir = os.listdir(subdirname) for seqnum in range(len(subdir)): # cycle through all sequences for this action category trainMHI[:,:,trainMHI_counter] = computeMHI(subdirname + subdir[seqnum])
actions = ['botharms', 'crouch', 'leftarmup', 'punch', 'rightkick'] allMHIs = list() for action in actions: subdirname = basedir + action + '/' subdirs = os.listdir(subdirname) for seq in subdirs: # cycle through all sequences for this action category directory = subdirname + seq mhi = computeMHI(directory) allMHIs.append(mhi) allMHIs = np.stack(allMHIs, axis=2) np.save('allMHIs.npy', allMHIs) print 'saved MHIs' allHus = list() allMHIs = np.load('allMHIs.npy') _, _, numSeqs = np.shape(allMHIs) for i in range(numSeqs): mhi = allMHIs[:, :, i] huVec = huMoments(mhi) allHus.append(huVec) allHus = np.stack(allHus) np.save('huVectors.npy', allHus) print 'saved Hus'
if __name__ == "__main__": actions = ['botharms', 'crouch', 'leftarmup', 'punch', 'rightkick'] trainDirectoryNames = [] trainMoments = np.asarray(np.load('huVectors.npy')) K = 4 for action in actions: directory_name = './PS5_Data/' + action + '/' trainDirectoryNames = trainDirectoryNames + [ directory_name + subdirectory_name for subdirectory_name in os.listdir(directory_name) ] trainDirectoryNames = np.reshape(trainDirectoryNames, (-1, 1)) nMHI = showNearestMHIs(huMoments(np.load('botharms-up-p1-1_MHI.npy')), trainMoments, trainDirectoryNames, K) plt.title("Chosen MHI - botharms-up-p1-1_MHI") plt.imshow(nMHI[:, :, 0]) plt.show() for ith_MHI in range(1, K + 1): plt.title("Nearest Neighbor " + str(ith_MHI) + " to botharms-up-p1-1 MHI") plt.imshow(nMHI[:, :, ith_MHI]) plt.show() nMHI = showNearestMHIs(huMoments(np.load('crouch-p1-1_MHI.npy')), trainMoments, trainDirectoryNames, K) plt.title("Chosen MHI - crouch-p1-1_MHI") plt.imshow(nMHI[:, :, 0]) plt.show()
return nMHI if __name__ == "__main__": actions = ['botharms', 'crouch', 'leftarmup', 'punch', 'rightkick'] trainDirectoryNames = [] trainMoments = np.asarray(np.load('huVectors.npy')) K = 4 for action in actions: directory_name = './PS5_Data/' + action + '/' trainDirectoryNames = trainDirectoryNames + [ directory_name + subdirectory_name for subdirectory_name in os.listdir(directory_name) ] trainDirectoryNames = np.reshape(trainDirectoryNames, (-1, 1)) nMHI = showNearestMHIs(huMoments(np.load('botharms-up-p1-1_MHI.npy')), trainMoments, trainDirectoryNames, K) figure = plot.figure(frameon=False) axis = figure.add_subplot(1, 1, 1) axis.imshow(nMHI[:, :, 0]) axis.set_title("Chosen MHI - botharms-up-p1-1_MHI") figure.add_axes(axis) plot.show() for ith_MHI in range(1, K + 1): figure = plot.figure(ith_MHI) axis = figure.add_subplot(1, 1, 1) axis.imshow(nMHI[:, :, ith_MHI]) axis.set_title("Nearest Neighbor " + str(ith_MHI) + " to botharms-up-p1-1 MHI") figure.add_axes(axis) plot.show()