1. 生成json
一个文件夹(只有001)
import os
f_train=open("/home/workstation/KPConv-xin/Data/HighRelief/train_test_split/shuffled_train_file_list.json",'w')
f_test=open("/home/workstation/KPConv-xin/Data/HighRelief/train_test_split/shuffled_test_file_list.json",'w')
f_val=open("/home/workstation/KPConv-xin/Data/HighRelief/train_test_split/shuffled_val_file_list.json",'w')
list_train=[]
list_test=[]
list_val=[]
def writename():
list_train.append('[')
list_test.append('[')
list_val.append('[')
path = "/home/workstation/KPConv-xin/Data/HighRelief/001/obj"
filename_list = os.listdir(path)
filename_list.sort()
i=0
for files in filename_list:
i+=1
Olddir = os.path.join(path, files)
if os.path.isdir(Olddir):
continue
filename = os.path.splitext(files)[0]
if i % 6 == 0:
list_test.append('"'+'HighRelief_benchmark'+'/'+'001'+'/'+filename+'"'+','+' ')
print('test:',filename)
elif i % 10 ==0:
list_val.append('"' + 'HighRelief_benchmark' +'/'+'001'+'/' + filename + '"' + ',' + ' ')
print('val:', filename)
else:
list_train.append('"'+'HighRelief_benchmark'+'/'+'001'+'/'+filename+'"'+','+' ')
print('train:', filename)
list_train[-1] = list_train[-1].split(',')[0]
list_test[-1]=list_test[-1].split(',')[0]
list_val[-1]=list_val[-1].split(',')[0]
list_train.append(']')
list_test.append(']')
list_val.append(']')
f_train.writelines(list_train)
f_test.writelines(list_test)
f_val.writelines(list_val)
writename()
f_train.close()
f_test.close()
f_val.close()
二个文件夹(可能还有001 002 003)
import os
f_train=open("/home/workstation/t/shuffled_train_file_list.json",'w')
f_test=open("/home/workstation/t/shuffled_test_file_list.json",'w')
f_val=open("/home/workstation/t/shuffled_val_file_list.json",'w')
list_train=[]
list_test=[]
list_val=[]
def writename():
list_train.append('[')
list_test.append('[')
list_val.append('[')
path1 = "/home/workstation/test"
filename_list1 = os.listdir(path1)
print(filename_list1)
for number in filename_list1:
path = path1+'/'+number+"/obj"
filename_list = os.listdir(path)
filename_list.sort()
i=0
for files in filename_list:
i+=1
Olddir = os.path.join(path, files)
if os.path.isdir(Olddir):
continue
filename = os.path.splitext(files)[0]
if i % 6 == 0:
list_test.append('"'+'HighRelief_benchmark'+'/'+number+'/'+filename+'"'+','+' ')
print('test:',filename)
elif i % 10 ==0:
list_val.append('"' + 'HighRelief_benchmark' +'/'+number+'/' + filename + '"' + ',' + ' ')
print('val:', filename)
else:
list_train.append('"'+'HighRelief_benchmark'+'/'+number+'/'+filename+'"'+','+' ')
print('train:', filename)
list_train[-1] = list_train[-1].split(',')[0]
list_test[-1]=list_test[-1].split(',')[0]
list_val[-1]=list_val[-1].split(',')[0]
list_train.append(']')
list_test.append(']')
list_val.append(']')
print('***',list_val)
print(len(list_train),len(list_test),len(list_val))
f_train.writelines(list_train)
f_test.writelines(list_test)
f_val.writelines(list_val)
writename()
f_train.close()
f_test.close()
f_val.close()
2. 把txt中的某一列数替换为其他文件的某一列
法一
f_yuan = open('001_000_001.pts','r', encoding='utf-8')
lines_yuan = f_yuan.readlines()
f_xin = open('001_000_000.pts','r', encoding='utf-8')
lines_xin = f_xin.readlines()
list1 = []
list2 = []
for i in range (len(lines_xin)):
yuan_a = lines_yuan[i].split()
yuan_b = yuan_a[0:2]
list1.append(yuan_b)
xin_a = lines_xin[i].split()
xin_b = xin_a[2:3]
list2.append(xin_b)
f_yuan.close()
f_xin.close()
vv=3
f = open("{}.pts".format(vv),'w')
for i in range(len(list1)):
a=str(list1[i][0])+' '+str(list1[i][1])+' '+str(list2[i][0])
f.write(a+'\n')
f.close()
法二
import numpy as np
data1 = np.loadtxt('C:/Users/ZH/Desktop/001_000_001.pts')
yuan_xy = data1[:,:2]
data2 = np.loadtxt('C:/Users/ZH/Desktop/001_000_000.pts')
xin_z = data2[:,2]
xin_z=np.expand_dims(xin_z,axis = 1)
finally_xyz = np.concatenate([yuan_xy,xin_z],axis = 1)
print(yuan_xy.shape)
print(xin_z.shape)
print(finally_xyz)
np.savetxt('C:/Users/ZH/Desktop/3333333333333.pts',finally_xyz,fmt= '%.06f')