카테고리 없음
KITTI BIN파일을 PCD(Text) 파일로 변환하기(python)
Wood Pecker
2021. 10. 19. 19:15
1. 개요
KITTI 에서 제공하는 LADAR(Laser Detection And Ranging) 센서정보를 Visualize 하여 보자. 제공되는 bin 파일을 텍스트 PCD 파일로 변환하고 사용할 것이다. 아래 싸이트에서 다운로드를 한다.
http://www.cvlibs.net/datasets/kitti/eval_object.php?obj_benchmark=3d
2. bin 파일을 PCD 텍스트 파일로 변환한다.
import struct
import sys
from struct import unpack
def readBinFile(fname):
x = []
y = []
z = []
try:
with open(fname, 'rb') as fp:
while True:
val1 = unpack('<1f', fp.read(4))
val2 = unpack('<1f', fp.read(4))
val3 = unpack('<1f', fp.read(4))
val4 = unpack('<1f', fp.read(4))
x.append(val1[0])
y.append(val2[0])
z.append(val3[0])
print(val1[0], val2[0], val3[0])
except Exception as e:
print(e)
pass
finally:
fp.close() # 파일 닫기
return x,y,z
def writePCDFile(fname,x,y,z):
numPoints= len(x)
with open(fname, 'w') as fp:
fp.write("VERSION 0.7\n")
fp.write("FIELDS x y z\n")
fp.write("SIZE 4 4 4\n")
fp.write("TYPE F F F\n")
fp.write("WIDTH "+str(numPoints)+"\n")
fp.write("HEIGHT 1\n")
fp.write("POINTS "+str(numPoints)+"\n")
fp.write("DATA ascii\n")
for index in range(numPoints):
txtLine = "{} {} {}\n".format(x[index],y[index],z[index] )
fp.write(txtLine)
pass
if __name__ == "__main__":
fname1 ="../StereoDataset/000001.bin"
fname2 ="../StereoDataset/000001.pcd"
x,y,z =readBinFile(fname1)
writePCDFile(fname2, x, y, z)
pass
PCL 라이브러리를 사용하여 .pcd 파일을 Visualize를 하여본다,
반응형