准备
- 编译好的BundleFusion一只
- 自己的数据集一捆
如果你按照这个教程进行编译BundleFusion,注意几个方面:
- 先把Microsoft Visual C++ 2010的东西卸载掉再装DirectX SDK June 2010
- 一定要用VS2013,我开始用VS2017不兼容旧版本VS的工程因此打不开工程文件,系统是可以装多个VS的。
- CUDA可以用高版本,我用的是CUDA 10.2,改工程文件的时候改为相应版本的props和targets文件。我的引用路径是"$(VCTargetsPath)\…\BuildCustomizations\CUDA 10.2.targets"
如果你使用freiburg1_desk数据集,注意里面的彩图和深度图是不按时间顺序对齐的,需要去下载associate.py脚本对齐,由于python2已经退出舞台里,在python3运行该脚本需要将里面第86-87行的代码改成如图的第88-89行代码。

然后输入命令:
1
| python associate.py rgb.txt depth.txt | awk '{print $2,$4}' > associate.txt
|

写如下脚本,整理这些彩图和深度图。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
import os, shutil dstDir = "sens" zidx = 6
af = open("associate.txt", "r") al = af.readlines() af.close()
os.mkdir(dstDir) for i in range(len(al)): mp = al[i].split() frame_name = str(i).zfill(zidx) rgb_dest = os.path.join(dstDir, "frame-{}.color.png".format(frame_name)) dep_dest = os.path.join(dstDir, "frame-{}.depth.png".format(frame_name)) shutil.copyfile(mp[0], rgb_dest) shutil.copyfile(mp[1], dep_dest) with open(os.path.join(dstDir, "frame-{}.pose.txt".format(frame_name)), "w") as f: f.write("1 0 0 0\n0 1 0 0\n0 0 1 0\n0 0 0 1") print("Copy frame {}".format(frame_name)) print("Finish")
|
其实上面的还没有跑成功
待完善。。。最近没搞bundlefusion了。
参考