主目录:
data文件夹目录:
首先介绍main函数
1. skes_path = './nturgb+d_skeletons/'
stat_path = osp.join(save_path, 'statistics')-》定义数据集路径,准备传参。
2. if not osp.exists('./raw_data'):
os.makedirs('./raw_data')-》如果不存在raw_data这个文件夹的话,递归创建目录raw_data
3. skes_name_file = osp.join(stat_path, 'skes_available_name.txt')
save_data_pkl = osp.join(save_path, 'raw_data', 'raw_skes_data.pkl')
frames_drop_pkl = osp.join(save_path, 'raw_data', 'frames_drop_skes.pkl')-》根据路径打开这3个文件并赋值给变量。
4.frames_drop_logger = logging.getLogger('frames_drop')
frames_drop_logger.setLevel(logging.INFO)
frames_drop_logger.addHandler(logging.FileHandler(osp.join(save_path, 'raw_data', 'frames_drop.log')))
frames_drop_skes = dict()-》创建丢弃帧的日志
5.get_raw_skes_data()-》调用get_raw_skes_data()方法
介绍get_raw_skes_data()方法:
1.skes_name = np.loadtxt(skes_name_file, dtype=str)-》打开skes_available_name.txt文件。
2.num_files = skes_name.size-》获取大小并赋值给变量
3. raw_skes_data = []
frames_cnt = np.zeros(num_files, dtype=np.int)-》建立一个与skes_available_name.txt中内容大小一样的用0填充的数组。
4.for (idx, ske_name) in enumerate(skes_name):-》遍历skes_available_name.txt取出id和骨骼名。
5.bodies_data = get_raw_bodies_data(skes_path, ske_name, frames_drop_skes, frames_drop_logger)-》根据循环的遍历将骨骼文件路径,骨骼名,放弃骨骼的空字典,放弃骨骼日志文件传入get_raw_bodies_data()方法中。
6.raw_skes_data.append(bodies_data)-》将get_raw_bodies_data()方法返回结果添加到raw_skes_data数组中。
7. frames_cnt[idx] = bodies_data['num_frames']-》将get_raw_bodies_data返回的bodies_data数组中对应位置骨骼ID添加到frames_cnt中对应的位置上。就是把骨骼id复制到frames_cnt中去。
8.if (idx + 1) % 1000 == 0:
print('Processed: %.2f%% (%d / %d)' % \
(100.0 * (idx + 1) / num_files, idx + 1, num_files))-》没处理完1000个打印一下当初处理信息。
9. with open(save_data_pkl, 'wb') as fw:
pickle.dump(raw_skes_data, fw, pickle.HIGHEST_PROTOCOL)
np.savetxt(osp.join(save_path, 'raw_data', 'frames_cnt.txt'), frames_cnt, fmt='%d')-》以.pkl文件的形式存储处理完的数据。
10. with open(frames_drop_pkl, 'wb'