当前位置:   article > 正文

ORB-SLAM2建立自己的数据集_orb slam2自己数据集制作

orb slam2自己数据集制作

使用ZED2拍摄视频

这里没有使用程序将ZED2双目相机拍摄成两幅画面,而是直接使用软件拍摄视频。若有大佬有相关代码还是很希望能发我下。
拍的视频 如下图,左右目在同一个画面中

剪裁视频

既然是直接用相机拍摄的图片,一幅画面里就包含了两个摄像头的画面,可以使用PR将画面切割成两个视频。
1、导入PR
在这里插入图片描述
2、进行裁剪
选取/视频效果/变化中的剪裁,拖到右下角视频序列上,修改剪裁比例即左边50%或者右边50%
在这里插入图片描述
3、导出
修改视频高度和宽度,导出即可。
注意:这里鼠标放到画面上会显示长宽的像素比,调整的时候注意一点就可以了。分别导出两次即左右目的画面。
在这里插入图片描述

分割图片

之前用过PR将视频逐帧输出,这种方式也是可以的,即在PR中选择导出格式为PNG等格式就可以,还可以调整导出的帧率,最高60帧输出一张图片。
注意:如果使用PR导出图片,不推荐视频长度过程,容易出现错误,渲染错误啥的挺烦的。
这里就使用程序进行导出了,在ubuntu20.04下进行操作的,代码应该通用的
opencv-python程序 change.py:用于将视频导成图片

#codingutf-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('haha_2.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('image_1'):
    os.makedirs('image_1')
success, frame = videoCapture.read()
idx = 1
i = 0
timeF = 30		#视频间隔帧数
save_dir = '/home/zhou/dataset_my/image_1/'
while success:
    cv2.imshow("显示", frame) #显示
#    cv2.waitKey( 1000 /int(fps) ) 	#延迟报错
    cv2.waitKey( 1 ) 			#延迟 即间隔时间  单位为毫秒
    filename = 'zed'+ str(idx)
    if(idx%timeF == 0):
    	cv2.imwrite(save_dir + str(i).zfill(6) + '.png',frame)	#名字正确了
    	print(save_dir + str(i).zfill(6) + '.png')	#str(idx).zfill(5) 转字符串 格式化长度
    	i = i + 1
    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
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46

在ubuntu下运行程序:
分割图片:修改文件名和位置即可,间隔帧率修改timeF
1、给change.py增加权限

chmod 775 change.py

2、进行图片分割

python3 change.py #具体用python还是python3看自己

opencv-python程序 text.py:用于导出time.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('times.txt','w') 	#w:打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
Ostr = ''
num = len(os.listdir('image_0'))
for i in range(0,num):
    name = str(i).zfill(6)
    Ostr = Ostr + name +'  '+ 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

提取时间序列,这个时间序列还是有点问题的,不是真正的时间,就是0到n

chmod 775 test.py

执行程序

python3 test.py

即可生成对应的文件,这里因为使用的是双目相机,所以参考KITTI数据集将左目右目分别放在两个文件夹中
在这里插入图片描述
KITTI数据集中calib.txt文件是畸变参数文件,这里因为没有用,所以暂时先没管。
times.txt即为生成的时间序列文件。

运行数据集

1、标定
运行自己的数据集就得有自己相机得yaml文件,即相机得参数。
标定很早之前就做了,参考的是
标定参数详解:

https://blog.csdn.net/weixin_37918890/article/details/95626004

标定过程参考:

https://blog.csdn.net/pj_find/article/details/106171407

标定的时候还是有个小疑问的,就是相机bf基线这个怎么确定,因为没有用opencv标定就暂且有问题。

2、运行数据集

./Examples/Stereo/stereo_kitti Vocabulary/ORBvoc.txt Examples/Stereo/my_zed.yaml /home/nvidia/Desktop/dataset/001

运行的时候发现特征点特别容易丢失,应该是图片质量的问题。不过起码能运行了就很好
Tracking.cc :: Track(), Now mState is LOST.
Track lost soon after initialisation, reseting…
System Reseting
Reseting Local Mapper… done
Reseting Loop Closing… done
Reseting Database… done

记录

2021.05.25
第一次把视频分割这些弄完,数据集的话因为这次拍的视频效果不行,暂时还需要重新拍摄,所以先把后续步骤弄清楚。

2021.05.26
修改下代码,重新上传。可运行数据集,但是要重新录制

此文目的是学习SLAM,只是记录一下,欢迎各位大神前来指点

参考:https://blog.csdn.net/weixin_44436677/article/details/105620262

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/522582
推荐阅读
相关标签
  

闽ICP备14008679号