一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

OpenCV4Android中NDK開發(fā)(一)

 mediatv 2020-07-15

 前言

以前的文章中《OpenCV簡(jiǎn)介與Android SDK環(huán)境》列出過OpenCV4Android的開發(fā),不過當(dāng)時(shí)是用的Java實(shí)現(xiàn),做了一些Demo后慢慢發(fā)現(xiàn),在圖像處理中用JAVA調(diào)OpenCV的開發(fā)處理速度是個(gè)瓶頸,所以才激起了學(xué)習(xí)NDK開發(fā)的想法,具體NDK開發(fā)的配置可以看我前面的文章《Android NDK編程(一)---NDK介紹及環(huán)境搭建》,本章主要說后面的OpenCV在Android NDK開發(fā)的環(huán)境搭建。

準(zhǔn)備工作

開發(fā)環(huán)境

  • Android Studio 3.3.2
  • NDK 19.2.5345600
  • OpenCV for Android 4.1.0

NDK的搭建

詳見《Android NDK編程(一)---NDK介紹及環(huán)境搭建


OpenCV下載及準(zhǔn)備

下載地址:https:///releases/

找到最新版本4.1.0的下載地址,點(diǎn)擊Android進(jìn)入下載

下載完后就是我們下圖紅框中的ZIP文件,然后我們解壓一下后即生成了OpenCV-android-sdk的文件夾(下圖藍(lán)框)


OpenCV4Android項(xiàng)目配置

1.創(chuàng)建項(xiàng)目

我們打開Android Studio新建一個(gè)項(xiàng)目,選擇Native C++

將程序名稱改為OpenCVDemo

C++Stand選擇為C++11

點(diǎn)擊Finish后我們完成了項(xiàng)目的創(chuàng)建

2.修改build.gradle文件

雙擊build.gradle文件

修改要我們要支持的CPU架構(gòu)下

調(diào)用OpenCV4Android中的so動(dòng)態(tài)庫用于打包進(jìn)APK,下圖中紅框內(nèi)的路徑就是我們上面下載的OpenCV4.1.0中的動(dòng)態(tài)庫路徑

我們看一下那個(gè)路徑

完整的build.gradle代碼

apply plugin: 'com.android.application'

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "dem.vac.opencvdemo"
        minSdkVersion 14
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        externalNativeBuild {
            cmake {
                cppFlags "-std=c++11"
                //我們的APP要支持的CPU架構(gòu)
                abiFilters'x86','armeabi-v7a'
            }
        }
    }
    //加上
    sourceSets{
        main{
            //當(dāng)前這個(gè)目錄下的庫文件會(huì)被調(diào)用并且被打包進(jìn)apk中
            jniLibs.srcDirs = ['D:/PersonalStudio/OpenCV-android-sdk/sdk/native/libs']
        }
    }
    buildTypes {
   
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    externalNativeBuild {
        cmake {
            path "src/main/cpp/CMakeLists.txt"
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    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'
}

3.修改CMakeLists.txt文件

下圖中標(biāo)紅框的地方就是我在原來的CMakeLists.txt中修改的地方

完整的CMakeList.txt代碼

# For more information about using CMake with Android Studio, read the
# documentation: https://d./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)

#該變量為真時(shí)會(huì)創(chuàng)建完整版本的Makefile
set(CMAKE_VERBOSE_MAKEFILE on)

#定義變量ocvlibs使后面的命令可以使用定位具體的庫文件
set(opencvlibs "D:/PersonalStudio/OpenCV-android-sdk/sdk/native/libs")

#調(diào)用頭文件的具體路徑
include_directories(D:/PersonalStudio/OpenCV-android-sdk/sdk/native/jni/include)

#增加我們的動(dòng)態(tài)庫
add_library(libopencv_java4 SHARED IMPORTED)

#建立鏈接
set_target_properties(libopencv_java4 PROPERTIES IMPORTED_LOCATION
        "${opencvlibs}/${ANDROID_ABI}/libopencv_java4.so")


# 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.

add_library( # Sets the name of the library.
        native-lib

        # Sets the library as a shared library.
        SHARED

        # Provides a relative path to your source file(s).
        native-lib.cpp)

# Searches for a specified prebuilt library and stores the path as a
# variable. Because CMake includes system libraries in the search path by
# default, you only need to specify the name of the public NDK library
# you want to add. CMake verifies that the library exists before
# completing its build.

find_library( # Sets the name of the path variable.
        log-lib

        # Specifies the name of the NDK library that
        # you want CMake to locate.
        log)

# Specifies libraries CMake should link to your target library. You
# can link multiple libraries, such as libraries you define in this
# build script, prebuilt third-party libraries, or system libraries.

target_link_libraries( # Specifies the target library.
        native-lib libopencv_java4

        # Links the target library to the log library
        # included in the NDK.
        ${log-lib})

劃重點(diǎn)

修改完后我們需要點(diǎn)擊選項(xiàng)上的Build-Refresh Linked C++ Projects

完成后我們展開native-lib下面的includes后里面有個(gè)opencv2已經(jīng)添加進(jìn)來了,如下圖:


上面我們的Android Studio通過NDK配置OpenCV已經(jīng)完下了,下面開始我就可以進(jìn)行代碼的編寫了。

-END-

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    国产精品午夜一区二区三区| 青青草草免费在线视频| 欧美大粗爽一区二区三区| 亚洲一区二区精品久久av| 亚洲欧洲一区二区综合精品| 丝袜人妻夜夜爽一区二区三区| 九九热精彩视频在线免费| 人妻熟女欲求不满一区二区| 好吊视频一区二区在线| 女人精品内射国产99| 日韩中文高清在线专区| 色播五月激情五月婷婷| 91人妻丝袜一区二区三区| 亚洲日本韩国一区二区三区| 91亚洲国产—区=区a| 日韩精品亚洲精品国产精品| 99国产精品国产精品九九 | 欧美日韩精品人妻二区三区| 亚洲清纯一区二区三区| 国产超薄黑色肉色丝袜| 精品日韩av一区二区三区| 久久精品国产一区久久久| 91人妻久久精品一区二区三区| 日韩和欧美的一区二区三区| 婷婷色网视频在线播放| 欧美日韩欧美国产另类| 亚洲淫片一区二区三区| 国产成人人人97超碰熟女| 久久精品伊人一区二区| 精品伊人久久大香线蕉综合| 欧美人妻盗摄日韩偷拍| 亚洲中文字幕在线视频频道| 91香蕉国产观看免费人人| 国产综合香蕉五月婷在线| 中文字幕熟女人妻视频| 国产在线小视频你懂的| a久久天堂国产毛片精品| 国产av熟女一区二区三区蜜桃| 久久国内午夜福利直播| 亚洲深夜精品福利一区| 国产丝袜美女诱惑一区二区|