python将.obj格式转换成.pcd格式

#使用pointnet训练数据之后,输出的数据格式为.obj文件,该脚本使用python可以将.obj转化成.pcd格式

python将.obj转换成.pcd格式

运行环境windows10, python3.5.2python3-pip
功能说明:创建空白文件夹workpace,创建文件obj2pcd_py.py,将代码复制到obj2pcd_py.py,在脚本所在目录创建data文件夹,将.obj文件放入到data中,运行脚本。(在data中自动创建pcd文件目录)
详细代码

import os 
import numpy as np
import sys
import shutil

filedir = os.path.dirname(sys.argv[0])
os.chdir(filedir)
wdir = os.getcwd()
print('当前工作目录为:{}\n'.format(wdir))


for parent,dirs,files in os.walk(wdir):
	print(dirs)
	if 'data' in parent: 
		os.chdir('data')
		os.mkdir('pcd_files')
		#os.mkdir('pcd_files')
		for file in files:
			prefix = file.split('.')[0]
			#f = open('0_pred.obj','rb')
			new_name = prefix + '.' + 'pcd'
			print(new_name)
			f = open(new_name,'w')
		
			num_lines = sum(1 for line in open(file))
			print(num_lines)  
			#pcd的数据格式 https://blog.csdn.net/BaiYu_King/article/details/81782789  
			
			f.write('# .PCD v0.7 - Point Cloud Data file format \nVERSION 0.7 \nFIELDS x y z rgba \nSIZE 4 4 4 4 \nTYPE F F F U \nCOUNT 1 1 1 1 \n' )
			f.write('WIDTH {} \nHEIGHT 1 \nVIEWPOINT 0 0 0 1 0 0 0 \n'.format(num_lines))
			f.write('POINTS {} \nDATA ascii\n'.format(num_lines))
			f1 = open(file,'rb')
			#f2 = open('new_book.pcd','w')

			lines = f1.readlines()
			a = []
			for line in lines:
				line1 = line.decode()
	
				new_line = line1.split(' ')[1] + ' ' + line1.split(' ')[2] + ' ' + line1.split(' ')[3] + ' ' + line1.split(' ')[4] + ' ' + line1.split(' ')[5] + ' ' + line1.split(' ')[6] 
				#new_line = line.split(' ')[1]
	
				#f2.write(new_line)
				f.write(new_line)
			f.close()
			
			shutil.move(new_name,'pcd_files')

脚本所在目录:
在这里插入图片描述
.obj文件所在目录,创建.pcd之后的文件目录:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/RNG_uzi_/article/details/87365214
今日推荐