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]))