AS上利用NDK——CMake方法移植ORB SLAM算法到Android

将要移植的ORB SLAM算法是一种基于Eigen/ g2o/ DBoW2/ OpenCV外部库,在VS上通过C++11编写的算法。 难点将包括以下3部分: 1、Eigen/ g2o/ DBoW2等外部库的移植; 2、.jpg/ .yaml/ .txt等初始化读取; 3、C++算法程序为适应Jni进行的改写。
摘要由CSDN通过智能技术生成

概述

本文参考:http://blog.csdn.net/martin20150405/article/details/54692386
我将要移植的ORB SLAM算法是一种基于Eigen/ g2o/ DBoW2/ OpenCV外部库,在VS上通过C++11编写的算法。

相对于参考文的方法,我要实现在工程中只添加算法本身的cpp代码,不添加相关库的.cpp/.h代码,即只添加.a/.so文件。

鉴于我上篇文章已实现了将OpenCV算法移植到Android端,剩下的难点将包括以下3部分:
1、Eigen/ g2o/ DBoW2等外部库的移植;
2、.jpg/ .yaml/ .txt等初始化读取
3、C++算法程序为适应Jni进行的改写。
接下来分别解决这3个部分。

1、外部库移植

要移植Eigen/ g2o/ DBoW2这三个库,因为g2o使用了Eigen,而DBoW2使用了OpenCV,故应先移植Eigen。首先回顾一下openCV是怎么移植到Android上去的。

回顾分析opencv

opencv官方网址:https://opencv.org/releases.html
官网上专门提供了Andorid的安装包,不过那主要是为了在Andorid上通过java编写opencv,速度比较慢。要想速度快,就必须用native (C++)编写。打开 …\OpenCV-android-sdk\sdk\native\libs\arm64-v8a,可以看到其为native方法准备的库。
OpenCV Native 用的静/动态库
其中.a文件时静态库,.so文件是动态库,一般的,用动态库的apk,体积小但运行速度慢;用静态库的apk,体积大但运行速度快。
在CMakeList.txt文件中有以下句子:

....
set(OpenCV_DIR D:/OpenCV/cv33/opencv-3.3.0-android-sdk/OpenCV-android-sdk/sdk/native/jni)
find_package(OpenCV REQUIRED)
....

在D:/OpenCV/cv33/opencv-3.3.0-android-sdk/OpenCV-android-sdk/sdk/native/jni路径下的文件中有OpenCVConfig.cmake、“include”、“abi-${ANDROID_NDK_ABI_NAME}”这三个文件/文件夹,
opencv jni文件内容
分别表示CMake的编译方式、include头文件、链接的库文件。所以我估计,

其他外部库添加到android NDK端使用都可以在CMakeList文件中组织:a/ include 本地电脑上的头文件;b/ 链接.a/ .so库文件。

Eigen移植

Eigen官方网址:http://eigen.tuxfamily.org/index.php?title=Main_Page
参考:http://blog.csdn.net/u010154424/article/details/50975711
去官网、及相应博客上观看可知,Eigen只有.h头文件,可以在任何平台使用(包括Android)。故只需要在CMakeList添加
include_directories(“Eigen本地电脑的安装目录”)
即可。
由于Eigen中可能用到C++11语言,需要在app的build.gradle中添加

android{
...
    defaultConfig{
        ...
        externalNativeBuild{
            cmake{
                cppFlags "-frtti -fexceptions -std=c++11"
                }
            }
        }
    }

g2o移植

g2o官方网址: https://github.com/RainerKuemmerle/g2o
可以看到下载的g2o库都是源码,需要你再本地CMake编译相关的库。因为在其路径下有g2o/script/android.toolchain.cmake,所以可以通过Cmake控制台输入

mkdir build
cd build
cmake -G
  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值