cv2 orb 图像拼接_ORB-SLAM2 入门例子

ad6f24e4d8c4bd09730e6bc4efcf40e7.png

运行截图如下

b7f023ca052bad5d25e18e08f319f1a4.png

b50c0ca426e12b4c46a53b3509d91887.png

目录文件夹如下

1275a3c9be293b5bd039b3070d682e70.png

CMakeLists.txt

cmake_minimum_required(VERSION 3.5)
set(OpenCV_DIR "/home/robin/program/opencv-3.4.3/build")
PROJECT(MYSLAM)
IF(NOT CMAKE_BUILD_TYPE)
SET(CMAKE_BUILD_TYPE Release)
ENDIF()
MESSAGE("Build type: " ${CMAKE_BUILD_TYPE})
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -O3 -march=native ")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -O3 -march=native")
# Check C++11 or C++0x support
include(CheckCXXCompilerFlag)
CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)
CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X)
if(COMPILER_SUPPORTS_CXX11)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
add_definitions(-DCOMPILEDWITHC11)
message(STATUS "Using flag -std=c++11.")
elseif(COMPILER_SUPPORTS_CXX0X)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
add_definitions(-DCOMPILEDWITHC0X)
message(STATUS "Using flag -std=c++0x.")
else()
message(FATAL_ERROR "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support. Please use a different C++ compiler.")
endif()
FIND_PACKAGE(OpenCV REQUIRED)
INCLUDE_DIRECTORIES(
"/home/robin/proj/slam/ORB_SLAM2/Thirdparty/DBoW2/DBoW2"
"/home/robin/proj/slam/ORB_SLAM2"
"/usr/include/eigen3"
"/home/robin/proj/slam/ORB_SLAM2/include"
)
MESSAGE(STATUS "Linking OPENCV Libn" ${OpenCV_LIBS})
ADD_EXECUTABLE(myslam myslam.cpp)
TARGET_LINK_LIBRARIES(myslam
${OpenCV_LIBS}
-lGL -lGLEW
/usr/local/lib/libpangolin.so
/home/robin/proj/slam/ORB_SLAM2/lib/libORB_SLAM2.so
/home/robin/proj/slam/ORB_SLAM2/Thirdparty/DBoW2/lib/libDBoW2.so
/home/robin/proj/slam/ORB_SLAM2/Thirdparty/g2o/lib/libg2o.so
/home/robin/.conda/envs/cv2/lib/libpcre.so.1
)

// 该文件将打开你电脑的摄像头,并将图像传递给ORB-SLAM2进行定位

// 需要opencv
#include <opencv2/opencv.hpp>

// ORB-SLAM的系统接口
#include "System.h"

#include <string>
#include <chrono>   // for time stamp
#include <iostream>

using namespace std;

// 参数文件与字典文件
// 如果你系统上的路径不同,请修改它
string parameterFile = "./myslam.yaml";
string vocFile = "/home/robin/proj/slam/ORB_SLAM2/Vocabulary/ORBvoc.txt";

int main(int argc, char **argv) {

    // 声明 ORB-SLAM2 系统
    ORB_SLAM2::System SLAM(vocFile, parameterFile, ORB_SLAM2::System::MONOCULAR, true);

    // 获取相机图像代码
    cv::VideoCapture cap(0);    // change to 1 if you want to use USB camera.

    // 分辨率设为640x480
    cap.set(CV_CAP_PROP_FRAME_WIDTH, 640);
    cap.set(CV_CAP_PROP_FRAME_HEIGHT, 480);

    // 记录系统时间
    auto start = chrono::system_clock::now();

    while (1) {
        cv::Mat frame;
        cap >> frame;   // 读取相机数据
        auto now = chrono::system_clock::now();
        auto timestamp = chrono::duration_cast<chrono::milliseconds>(now - start);
        SLAM.TrackMonocular(frame, double(timestamp.count())/1000.0);
    }

    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值