#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 ...