1. 之前虽然把rgb.txt生成了,但是程序跑出来可视化窗口并没有播放连续的图片序列,一直只有一帧
- 试了下网上下载的tum的数据,是没问题的,所以只能是rgb.txt的问题
- 网上查了一下,看到说mono_tum.cc是默认不看rgb.txt前三行的(因为前三行只是说明一下这个rgb.txt来源,以及表示的内容含义)
- 然后就跟着在我的rgb.txt前面加了三行,这样终端运行程序,输出时加载的图片数量就从1739变成了1742,这样图片是完全加载出来了
但是可视化窗口,仍然只有那一帧
- 然后也看到有人说,可视化窗口播放的图片序列,一卡一卡的,是因为休眠时间太长了
- 突然想到,我也可能这样(那我的休眠时间也太长了吧/(ㄒoㄒ)/~~)
- 看代码发现它是(加载下一帧的时间戳差-处理当前这种图片的时间)*1e6,所以这个和时间戳怎么写(因为时间戳没直接给)是很有关系的
- 最后,第一列小数后面要有6位
# color images
# file: 'C0_train'
# timestamp filename
0.000001 rgb/00001.png
0.000002 rgb/00002.png
0.000003 rgb/00003.png
0.000004 rgb/00004.png
0.000005 rgb/00005.png
0.000006 rgb/00006.png
0.000007 rgb/00007.png
0.000008 rgb/00008.png
0.000009 rgb/00009.png
0.000010 rgb/00010.png
0.000011 rgb/00011.png
0.000012 rgb/00012.png
0.000013 rgb/00013.png
0.000014 rgb/00014.png
0.000015 rgb/00015.png
0.000016 rgb/00016.png
0.000017 rgb/00017.png
0.000018 rgb/00018.png
0.000019 rgb/00019.png
0.000020 rgb/00020.png
0.000021 rgb/00021.png
0.000022 rgb/00022.png
0.000023 rgb/00023.png
0.000024 rgb/00024.png
0.000025 rgb/00025.png
0.000026 rgb/00026.png
0.000027 rgb/00027.png
0.000028 rgb/00028.png
0.000029 rgb/00029.png
2. 生成rgb.txt
这个是修改那个rgb.txt的,网上的代码,稍微改了一点
#!/usr/bin/python
# encoding:utf-8
import os
def getName(num):
strTmp = []
strRes = ''
while(num / 10):
strTmp.append(num % 10)
num = num / 10
strTmp.append(num)
n = len(strTmp)
for i in range(0,5-n):
strRes = strRes + '0'
for i in range(n-1,-1,-1):
strRes = strRes + str(strTmp[i])
return strRes
file_object = open('rgb.txt','w')
Ostr = ''
num = len(os.listdir('rgb'))
for i in range(1,num+1):
name = getName(i)
Ostr = Ostr + '0.0'+name + ' rgb/' + name + '.png\n'
file_object.writelines(Ostr)
file_object.close()
3. 图片重命名
这个是图片重命名的,原始图片放在rgb下面,改名后,放在rg下面,最后删掉之前的rgb文件夹,并将rg改名为rgb
#!/usr/bin/python
# encoding:utf-8
import os
import shutil
path ='/home/mk/tools/ORB_SLAM2/data/C0_train/camera/test1'
#拿到所有文件名
def get_filelist(dir):
Filelist = []
#for home, dirs, files in os.walk(dir):
# for filename in files:
# 文件名列表,包含完整路径
#Filelist.append(os.path.join(home, filename))
# # 文件名列表,只包含文件名
# Filelist.append( filename)
for data_file in sorted(os.listdir(dir)):#(按照一定顺序读取文件)
Filelist.append( data_file)
return Filelist
if __name__ =="__main__":
#拿到所有文件名
Filelist = get_filelist(os.path.join(path,"rgb"))
#生成新的文件名
filename_new = []
for i in range(len(Filelist)):
filename_new.append(("%05d" % (i+1))+".png")
#生成新的文件-特定的文件名
output_dir = os.path.join(path,"rg")
if not os.path.exists(output_dir):
os.mkdir(output_dir)
for i in range(len(Filelist)):
print(os.path.join(output_dir, filename_new[i]))
shutil.copy(os.path.join(os.path.join(path,"rgb"),Filelist[i]), os.path.join(output_dir, filename_new[i]))