orbslam2跑自己代碼--可視化窗口只顯示一幀,並沒有連續播放

1. 之前雖然把rgb.txt生成了,但是程序跑出來可視化窗口並沒有播放連續的圖片序列,一直只有一幀

  1. 試了下網上下載的tum的數據,是沒問題的,所以只能是rgb.txt的問題
  2. 網上查了一下,看到說mono_tum.cc是默認不看rgb.txt前三行的(因爲前三行只是說明一下這個rgb.txt來源,以及表示的內容含義)
  3. 然後就跟着在我的rgb.txt前面加了三行,這樣終端運行程序,輸出時加載的圖片數量就從1739變成了1742,這樣圖片是完全加載出來了

但是可視化窗口,仍然只有那一幀

  1. 然後也看到有人說,可視化窗口播放的圖片序列,一卡一卡的,是因爲休眠時間太長了
  2. 突然想到,我也可能這樣(那我的休眠時間也太長了吧/(ㄒoㄒ)/~~)
  3. 看代碼發現它是(加載下一幀的時間戳差-處理當前這種圖片的時間)*1e6,所以這個和時間戳怎麼寫(因爲時間戳沒直接給)是很有關係的
  4. 最後,第一列小數後面要有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]))
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章