ORB-SLAM2运行自己的数据集
本人邮箱:sylvester0510@163.com,欢迎交流讨论, 欢迎转载,转载请注明网址http://blog.youkuaiyun.com/u010128736/
一、生成数据集
1.生成图片
搭建好ORB-SLAM后,可以跑自己的数据进行实验了。首先进行数据准备。我这里是通过摄像头采集到的视频。先要将视频处理成一帧一帧的图片,如果采集来的是图片的话就不用做这步了。为了方便并且有序,统一将图片按顺序命名为“00001.png”,“00002.png”,···,“00xxx.png”。下面附一段读视频存成指定名字的图片的Python 程序,程序已将生成的图片放入指定文件夹中。若你通过其他方式将名字改成上述表达的以后,将其放到’/rgb/’文件夹中:
import os
import cv2
import numpy as np
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
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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
2.生成索引txt
现在要生成一个ORB-SLAM2规定的一个txt文本,用来表示图像数据集内容和关系的。参照例子,使用下面python 生成txt:
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 + name + ' rgb/' + name + '.png\n'
file_object.writelines(Ostr)
file_object.close()
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
3.制作相机参数文件
使用OpenCV 进行标定内参,计算出相机的内参和畸变系数,这里就不详细说了。按照例子中的参数文件(如./Examples/TUM1.yaml),制作一个新的相机参数文件。
二、运行程序进行测试
至此,就可以像使用测试 用例那样,运行程序测试自己的数据集了。