Project

[MMDetion3D] Customized Data _ ply파일을 bin으로 변환

scone 2023. 2. 10. 12:23

https://callmescone.tistory.com/294

 

[MMDetection3D] ply to bin, obj to ply

If you want to put a ply file ply to bin convert_ply('./test.ply', './test.bin') import numpy as np import pandas as pd from plyfile import PlyData def convert_ply(input_path, output_path): plydata = PlyData.read(input_path) # read file data = plydata.elem

callmescone.tistory.com

 

  • 작성한 코드 전문
import numpy as np
import pandas as pd
import argparse
import os
import errno
from plyfile import PlyData

def parse_args():
    parser = argparse.ArgumentParser()
    parser.add_argument('-i', '--input_path', help='input folder path')
    parser.add_argument('-o', '--output_path', help='output folder path')
    args = parser.parse_args()
    return args

def convert_ply(input_path, output_path):
    plydata = PlyData.read(input_path)  # read file
    data = plydata.elements[0].data  # read data
    data_pd = pd.DataFrame(data)  # convert to DataFrame
    data_np = np.zeros(data_pd.shape, dtype=np.float32)  # initialize array to store data
    property_names = data[0].dtype.names  # read names of properties
    for i, name in enumerate(
            property_names):  # read data by property
        data_np[:, i] = data_pd[name]
    data_np.astype(np.float32).tofile(output_path)

def convert_folder(input_folder, output_folder):
    filenames = os.listdir(input_folder)
    for filename in filenames :
        input_path = os.path.join(input_folder,filename)
        output_path = os.path.join(output_folder,filename[:-3]+'bin')
        convert_ply(input_path,output_path)

def check_dir(output_folder):
    try :
        os.makedirs(output_folder)
    except OSError as exc :
        if exc.errno == errno.EEXIST and os.path.isdir(output_folder) :
            pass

def main():
    args = parse_args()
    input_folder = args.input_path
    output_folder = args.output_path
    check_dir(output_folder)
    convert_folder(input_folder, output_folder)


if __name__ == '__main__':
    main()

 

  • convert_ply는 튜토리얼 코드 그대로 차용 하였습니다.
  • check_dir : 폴더가 있을 경우 패스, 없을 경우 생성
    • errno는 에러코드 모두를 담고 있는 라이브러리 입니다.

 

본래 갖고 있는 데이터를 bin으로 만들었습니다. 이제 data converter를 건들여 봅시다.