创建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
在生成的rgb.txt文件 开始前三行,是无法识别的,所以可以加
# color images
# file: 'My_slam.bag'
# timestamp filename
如图:
本人是用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后在来解决此问题)