Ubuntu16.04系统AndroidStudio 3.3.2下CMake 3.10.2+OpenCV 3.4.6 NDK开发

Ubuntu16.04系统AndroidStudio 3.3.2下CMake 3.10.2+OpenCV 3.4.6 NDK开发

Ubuntu16.04系统AndroidStudio 3.3.2下CMake 3.10.2+OpenCV 3.4.6 NDK开发

如题

开发环境

    Ubuntu 16.04
    Android Studio 3.3.2
    CMake 3.10.2
    Android 7.0 (API Level 24)
    OpenCV 3.4.6 Android SDK
    Android NDK r20

具体步骤

1,环境准备
打开Android Studio 3.3.2,使用IDE安装相关环境
在这里插入图片描述在这里插入图片描述
2,建立项目
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

3,导入OpenCV(Java端,可跳过)

	此部分针对于Java代码中调用OpenCV库(由于直接使用Java,效率较低,不在此次说明之列,仅供参考)
	若编写NDK时,调用C++库,可直接跳过此部分。

(1)在http://opencv.org/releases.html下载OpenCV 3.3.4 Android SDK,并解压
(2)在项目中导入OpenCV Android SDK
如下图:File -> New… -> Import Module,然后在Source Directory中选取 /${Path2OpenCVSDK}/sdk/java目录,Module Name变为“openCVLibrary334”
在这里插入图片描述在这里插入图片描述
如下图:选择File -> Project Structure,左侧Modules - “app”,右侧选Dependencies,点击加号,并选择Module Dependency,在弹出框中选择:openCVLibrary334在这里插入图片描述
(3)OpenCV Android SDK配置更新
由于OpenCV Android SDK编译历史与当前版本的差异,需要做一点的修改以适配当前的开发环境:
如下图:去掉不必要的行说明
如下图:OpenCVSDK默认的build.gradle文件设置为比较旧的版本可能会引发编译错误,修改openCVLibrary334\build.gradle compileSdkVersion为新的版本
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
4,使用OpenCV NDK

	这里原本需要介绍完整的基于CMake来实现NDK的使用,
	作者太懒,默认大家已有CMake及Android相关经验,
	下面暂时先介绍相关的几个文件的修改和使用。

4.1 CPP编译依赖文件的准备(暴力复制方法,此方法复制内容较多,对于具体的lib包可根据使用平台选择性复制)
(1)把/${Path2OpenCVSDK}/OpenCV-android-sdk/sdk/native/jni/include复制到app/src/main/cpp中,把/${Path2OpenCVSDK}/OpenCV-android-sdk/sdk/native/libs下的文件夹复制到app/libs下
下图为include的部分内容:
在这里插入图片描述
(2)修改项目build.gradle

apply plugin: 'com.android.application'

android {
   
    compileSdkVersion 28
    defaultConfig {
   
        applicationId "com.example.test_opencv_ndk"
        minSdkVersion 24
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        externalNativeBuild {
   
            cmake {
   
                cppFlags "-std=c++11", "-frtti", "-fexceptions"
                abiFilters 'x86', 'x86_64', 'armeabi-v7a', 'arm64-v8a'
                //!!!注意此部分设置编译参数和abi使用的平台
            }
        }
    }
    sourceSets {
   
        main {
   
            jniLibs.srcDirs = ['libs']
            //!!!注意此部分设置jniLibs的目录
        }
    }
    buildTypes {
   
        release {
   
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    externalNativeBuild {
   
        cmake {
   
            path "src/main/cpp/CMakeLists.txt"
            //!!!注意此部分设置对应CMakeList.txt的路径
        }
    }
}

dependencies {
   
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
    implementation project(':openCVLibrary346')
}

(3)修改app/src/main/cpp/CMakeLists.txt

# For more information about using CMake with Android Studio, read the
# documentation: https://d.android.com/studio/projects/add-native-code.html

# Sets the minimum version of CMake required to build the native library.

cmake_minimum_required(VERSION 3.4.1)

# Creates and names a library, sets it as either STATIC
# or SHARED, and provides the relative paths to its source code.
# You can define multiple libraries, and CMake builds them for you.
# Gradle automatically packages shared libraries with your APK.

set(CMAKE_VERBOSE_MAKEFILE on)

# opencv
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值