ORB-SLAM 2跑通自己的数据集

ORB-SLAM 2跑通自己的数据集

    • 一 、拍摄视频并转化为图片:
    • 二、准备索引目录文件:
    • 三、生成自己的参数配置文件TUM.yaml。复制TUM1.yaml,并修改参数即可。
    • 四、ORB-SLAM2所在的目录并运行如下命令即可:
    • 五、本次实验存在的问题:

一 、拍摄视频并转化为图片:

创建python文件,命名为:setVedio.py

#coding:utf-8
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('home.mp4')
#获得码率及尺寸
fps = videoCapture.get(cv2.CAP_PROP_FPS)
size = (int(videoCapture.get(cv2.CAP_PROP_FRAME_WIDTH)),
        int(videoCapture.get(cv2.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)+'.jpg',frame)
    success, frame = videoCapture.read() #获取下一帧
    idx = idx + 1

在相应的位置打开终端运行刚刚.py文件:

python setVedio.py

二、准备索引目录文件:

创建python文件,命名为:file_text.py

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 + '.jpg\n'
file_object.writelines(Ostr)
file_object.close()
python file_text.py

ORB-SLAM 2跑通自己的数据集_第1张图片
在生成的rgb.txt文件 开始前三行,是无法识别的,所以可以加

# color images
# file: 'My_slam.bag'
# timestamp filename

如图:
ORB-SLAM 2跑通自己的数据集_第2张图片

三、生成自己的参数配置文件TUM.yaml。复制TUM1.yaml,并修改参数即可。

本人是用Examples/Monocular/TUM1.yaml没做修改,先跑跑试试。

四、ORB-SLAM2所在的目录并运行如下命令即可:

./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txt Examples/Monocular/TUM1.yaml /home/weiweu/My_SLAM/dataset1

五、本次实验存在的问题:

在运行时,能看到ORB-SLAM2:Current Frame的窗口一直在实时播放数据,但是ORB-SLAM2:Map Viewer的窗口始终没有发生任何改变,说明一直没有地图信息。但是运行公开的数据集就有地图信息。这是个神奇的点!(此问题有待解决,等待深入学习ORB-SLAM2后在来解决此问题)

你可能感兴趣的:(ROS学习)