0


ModelNet40/ModelNet10 数据集预处理

ModelNet数据集是点云处理领域常用的数据集,今天简单分享下预处理ModelNet的方法。
数据集链接:ModelNet40
直接点击两个zip文件即可下载
解压后,数据集内部结构大概就是10&40个分类,内部分为train和test:
在这里插入图片描述
在这里插入图片描述
打开文件夹能看到,里面的数据格式为off文件。这里我们要转换为txt格式进行下一步处理。
在这里插入图片描述
处理代码如下:

  1. import os
  2. import numpy
  3. from tqdm import tqdm
  4. import open3d as o3d
  5. # 文件夹路径
  6. source_path =''
  7. target_path =''# 获取off文件中的xyz数据defread_off_file(off_file):
  8. mesh = o3d.io.read_triangle_mesh(off_file)# OFF文件转换为点云
  9. point_cloud = numpy.asarray(mesh.vertices)return point_cloud
  10. defmake_directory(path):ifnot os.path.exists(path):
  11. os.makedirs(path)returndefget_file_name(file_path):
  12. filename = file_path.split('/')[-1]# print(filename) chair_001.off(name, suffix)= filename.split('.')# print(name, suffix) chair_001 offreturn name
  13. deftraversal_directory(path):
  14. dirs =[]
  15. files =[]for item in os.scandir(path):if item.is_dir():
  16. dirs.append(item.path)elif item.is_file():
  17. files.append(item.path)return dirs, files
  18. defrun():
  19. class_dirs, _ = traversal_directory(source_path)for item in class_dirs:#bathtub, bed, chair, desk, dresser
  20. dir_name = item.split('/')[-1]# print(dir_name)
  21. src_train_path = source_path +'/'+dir_name +'/'+'train'
  22. src_test_path = source_path +'/'+dir_name +'/'+'test'
  23. trg_train_path = target_path +'/'+dir_name +'/'+'train'
  24. trg_test_path = target_path +'/'+dir_name +'/'+'test'
  25. make_directory(trg_test_path)
  26. make_directory(trg_train_path)
  27. _, train_files = traversal_directory(src_train_path)
  28. _, test_files = traversal_directory(src_test_path)forfilein train_files:
  29. name = get_file_name(file)
  30. pc = read_off_file(file)
  31. save_path = trg_train_path +'/'+ name +'.txt'
  32. numpy.savetxt(save_path, pc, delimiter=',')print(save_path)forfilein test_files:
  33. name = get_file_name(file)
  34. pc = read_off_file(file)
  35. save_path = trg_test_path +'/'+ name +'.txt'
  36. numpy.savetxt(save_path, pc, fmt="%.6f", delimiter=',')print(save_path)if __name__ =="__main__":
  37. run()

把source_path和target_path换成自己的路径即可。


本文转载自: https://blog.csdn.net/weixin_45669101/article/details/140716984
版权归原作者 ミッタン 所有, 如有侵权,请联系我们删除。

“ModelNet40/ModelNet10 数据集预处理”的评论:

还没有评论