使用 https://github.com/zju3dv/NeuralRecon
项目时重建得到模型,需要给该ply文件加上纹理。
解决方案如下所述,https://github.com/zju3dv/NeuralRecon/issues/96https://github.com/zju3dv/NeuralRecon/issues/96按照该项目readme所述创建环境。 Issues · nmoehrle/mvs-texturing · GitHubhttps://github.com/nmoehrle/mvs-texturing/issues在ARKIT以及Neural Recon运行后得到的数据文件夹下,运行以下脚本在照片文件夹下自动生成.cam文件。
import os
import numpy as np
import cv2 as cv
def rdnumpy(txtname):
with open(txtname) as f:
line = f.readlines()
lines = len(line) # 行数
le = line[0].strip('\n').split(' ')
columns = len(le) # 列
A = np.zeros((lines, columns), dtype=float)
A_row = 0
for lin in line:
list = lin.strip('\n').split(' ')
A[A_row:] = list[0:columns]
A_row += 1
return A
def set_intrinsics( K, width, height):
fx = K[0, 0]
fy = K[1, 1]
paspect = fy / fx
dim_aspect = width / height
img_aspect = dim_aspect * paspect
if img_aspect < 1.0:
flen = fy / height
else:
flen = fx / width
#d0,d1=-0.82574, 4.34752
ppx = K[0, 2] / width
ppy = K[1, 2] / height
pp = [ppx, ppy]
return [flen,0,0,paspect,ppx,ppy]
if __name__=="__main__":
# generate .cam
# in_dir = '../NeuralRecon/data/2022-05-17T16-08-39/'
in_dir = '../NeuralRecon/data/2022-05-17T16-00-48'
o_dir = '../NeuralRecon/data/2022-05-17T16-00-48/images'
file = os.listdir(os.path.join(in_dir,'intrinsics'))
file.sort()
img = os.listdir(os.path.join(in_dir,'images'))
img.sort()
poses = os.listdir(os.path.join(in_dir,'poses'))
poses.sort()
view = os.listdir(o_dir)
view.sort()
for i in range(0,len(file)):
fname = os.path.join(os.path.join(in_dir,'intrinsics'),file[i])
pic = cv.imread(os.path.join(os.path.join(in_dir,'images'),img[i]))
K=rdnumpy(fname)
p=rdnumpy(os.path.join(os.path.join(in_dir,'poses'),poses[i]))
o_file = os.path.join(os.path.join(o_dir, img[i].replace('.jpg','.cam')))
intrinsics = set_intrinsics(K,pic.shape[1],pic.shape[0])
with open(o_file,'w') as f:
s1=''
s2=''
for i in range(0,3):
for j in range(0,3):
s1+=str(p[i][j])+' '
s2+=str(p[i][3])+' '
f.write(s2+s1[:-1]+'\n')
f.write(str(intrinsics[0])+' 0 0 '+str(intrinsics[3])+" "+str(intrinsics[4])+" "+str(intrinsics[5])+'\n')
进行加纹理操作:
/mvs-texturing/build/apps/texrecon/texrecon images 2022-05-17T16-00-48.ply textured
命令说明如下:images为照片及.cam文件所在文件夹, 2022-05-17T16-00-48.ply为重建得到的文件,texture为自己为生成的带纹理模型的名称。texrecon为mvs-texturing生成的可执行文件。