NeuralRecon 加纹理

 使用 ​​​​​​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生成的可执行文件。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值