ORB SLAM2執行自己的資料集

2021-08-13 09:10:55 字數 1818 閱讀 6727

#coding:utf-8

import os

import cv2

import numpy as np

defgetname

(num):

strtmp =

strres = ''

while(num / 10):

num = num / 10

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

videocapture = cv2.videocapture('ch-b_19700101_010656.h264')

#獲得位元速率及尺寸

fps = videocapture.get(cv2.cv.cv_cap_prop_fps)

size = (int(videocapture.get(cv2.cv.cv_cap_prop_frame_width)),

int(videocapture.get(cv2.cv.cv_cap_prop_frame_height)))

#讀幀if

not os.path.exists('rgb/'):

os.makedirs('rgb')

success, frame = videocapture.read()

idx = 1

while success:

cv2.imshow("顯示", frame) #顯示

cv2.waitkey(1000/int(fps)) #延遲

cv2.imwrite('rgb/'+getname(idx)+'.png',frame)

success, frame = videocapture.read() #獲取下一幀

idx = idx + 1

現在要生成乙個orb-slam2規定的乙個txt文字,用來表示影象資料集內容和關係的。參照例子,使用下面python生成txt:

import os

defgetname

(num):

strtmp =

strres = ''

while(num / 10):

num = num / 10

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 + name + ' rgb/' + name + '.png\n'

file_object.writelines(ostr)

file_object.close()

使用opencv進行標定內參,計算出相機的內參和畸變係數,這裡就不詳細說了。按照例子中的引數檔案(如./examples/tum1.yaml),製作乙個新的相機引數檔案。

至此,就可以像使用測試用例那樣,執行程式測試自己的資料集了。

**

ORB SLAM 2跑通自己的資料集

二 準備索引目錄檔案 三 生成自己的引數配置檔案tum.yaml。複製tum1.yaml,並修改引數即可。四 orb slam2所在的目錄並執行如下命令即可 五 本次實驗存在的問題 建立python檔案,命名為 setvedio.py coding utf 8 import os import cv...

Kinect跑自己的ORB SLAM2遇到的坑

需要注意的是,kinect自己帶了乙個opencv3.3.1,我以前安了乙個3.4.0,後來又安了乙個2.4.16.6,這樣opencv就比較亂,在執行.build.sh的時候就會報錯,大概是這種型別的錯誤 於是我就把opencv2.4.16.6給解除安裝了,沒想到它把3.4.0也卸了一部分相同的部...

ORB SLAM2中ROS RGBD執行例項

最近想實現基於ros rgbd相機的orb slam2,剛好手上有個kinect,雖然是v1版本的,不過有玩的就好了o o 1 在ubuntu上安裝kinectv1相關驅動文,參考文章 驅動安裝成功之後就可以使用kinectv1了。2 orb slam2 ros rgbd 執行 首先成功編譯orb ...