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

Posted 王张飞

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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之后的文件目录:

以上是关于python将.obj格式转换成.pcd格式的主要内容,如果未能解决你的问题,请参考以下文章

点云格式转换:pcd点云转txt点云 (XYZXYZIXYZRGB)

点云格式转换:pcd点云转txt点云 (XYZXYZIXYZRGB)

点云格式转换:txt点云转pcd点云(XYZXYZIXYZRGBXYZIRGBGpstime)

点云格式转换:txt点云转pcd点云(XYZXYZIXYZRGBXYZIRGBGpstime)

点云格式转换:las点云转pcd点云(XYZXYZIXYZRGBXYZRGBIGpstime)

点云格式转换:las点云转pcd点云(XYZXYZIXYZRGB)