cam_slam3.cpp 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. // cam_slam3.cpp
  2. // 该文件将打开你电脑的摄像头,并将图像传递给ORB-SLAM3进行定位
  3. // opencv
  4. #include <opencv2/opencv.hpp>
  5. // ORB-SLAM的系统接口
  6. #include "System.h"
  7. #include <string>
  8. #include <chrono> // for time stamp
  9. #include <iostream>
  10. using namespace std;
  11. // 参数文件与字典文件
  12. // 如果你系统上的路径不同,请修改它
  13. string parameterFile = "../ost.yaml";//这个文件如果没有可以用程序里面的yaml文件代替,比如TUM1.yaml
  14. string vocFile = "../../Vocabulary/ORBvoc.txt";
  15. int main(int argc, char **argv) {
  16. // 声明 ORB-SLAM2 系统
  17. ORB_SLAM3::System SLAM(vocFile, parameterFile, ORB_SLAM3::System::MONOCULAR, true);
  18. // 获取相机图像代码
  19. cv::VideoCapture cap(0); // change to 1 if you want to use USB camera.
  20. // 分辨率设为640x480
  21. cap.set(cv::CAP_PROP_FRAME_WIDTH, 640);;//设置采集视频的宽度
  22. cap.set(cv::CAP_PROP_FRAME_HEIGHT, 480);//设置采集视频的高度
  23. // 记录系统时间
  24. auto start = chrono::system_clock::now();
  25. while (1) {
  26. cv::Mat frame;
  27. cap >> frame; // 读取相机数据
  28. auto now = chrono::system_clock::now();
  29. auto timestamp = chrono::duration_cast<chrono::milliseconds>(now - start);
  30. SLAM.TrackMonocular(frame, double(timestamp.count())/1000.0);
  31. }
  32. return 0;
  33. }