国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android Studio中使用jni進行opencv開發的環境配置方法

2019-10-21 21:42:53
字體:
來源:轉載
供稿:網友

使用jni進行opencv開發可以快速地將PC端的opencv代碼移植到手機上,但是如何在android studio下進行配置,網上幾乎找不到教程,大多都是eclipse下使用mk文件的方法,找不到使用gradle的方案,摸了幾天,總算是摸清楚了。

其實找對了方法,用android studio配置環境要比eclipse簡單很多,首先是預先準備的環境:

1.Android studio,官網最新版,我用的是2.3.1;

2.OpenCV4Android,官網最新版,我用的3.2.0;

就這兩個就行了,不需要像eclipse一樣手動配置jni啊adt啊一堆有的沒的。

配置步驟如下:

【1.新建項目】

Android,Studio,jni,opencv

選中"Include C++ support",后面無腦next,Android會幫你把jni環境直接配置好。等gradle build完畢,可以在project窗口的Android標簽頁下看到有External Build Files,下面是一個CMakeList.txt文件,這個是Android Studio自動生成的一個makefile,相當于用cmake編譯jni的部分,如果你cmake用得很熟練,那么只要在這個文件里配置好opencv的路徑,再在gradle里加點參數就可以輕松搞定,具體過程如下:

【2.編輯CMakeList.txt】

在CMakeList.txt中增加如下條目:

#項目路徑和opencv路徑set(pathToProject D:/ImageProcess/JniExample)set(pathToOpenCv D:/OpenCV-android-sdk)#支持-std=gnu++11set(CMAKE_VERBOSE_MAKEFILE on)set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11")#配置加載native依賴include_directories(${pathToOpenCv}/sdk/native/jni/include)#動態方式加載add_library( lib_opencv SHARED IMPORTED )#引入libopencv_java3.so文件set_target_properties(lib_opencv PROPERTIES IMPORTED_LOCATION ${pathToProject}/app/src/main/jniLibs/${ANDROID_ABI}/libopencv_java3.so)

可以看到配置里有一個${pathToProject}/app/src/main/jniLibs/${ANDROID_ABI}/libopencv_java3.so文件,我們暫時還沒有,需要我們手動創建相應的jniLibs目錄,這個目錄會被Android Studio自動識別作為編譯jni代碼時的庫目錄。

Android,Studio,jni,opencv

創建好如圖的目錄以后,將OpenCV-android-sdk/sdk/native/libs下的文件夾全部復制到jniLibs下面。

最后,在CMakeList的target_link_libraries中添加一條lib_opencv:

target_link_libraries( # Specifies the target library.            native-lib            # Links the target library to the log library            # included in the NDK.            ${log-lib}            lib_opencv)

【3.gradle配置】

在項目根目錄下新建文件夾“distribution”,將OpenCV-android-sdk/sdk/native/jni下的include文件夾拷貝過去,再將OpenCV-android-sdk/sdk/native下的libs文件夾拷貝過去。(這個方法參考了某個博客,恕我記性不好沒法貼出來源……如果不拷貝直接使用OpenCV-android-sdk下的路徑應該也是可以的)

在Gradle Scripts下應該有兩個build.gradle,其中一個是Project的,我們不用管,打開Module:app的gradle,在最外層添加一行def lib_distribution_root = '../distribution'

在android節點的defaultconfig下添加:

externalNativeBuild {  cmake {    cppFlags "-std=c++11 -frtti -fexceptions"    abiFilters 'x86', 'x86_64', 'armeabi', 'armeabi-v7a', 'arm64-v8a', 'mips', 'mips64'  }}

注意這和AS自動生成的externalNativeBuild的位置是不一樣的,兩條都要有,再在android節點下添加:

sourceSets {  main {    jniLibs.srcDir(['${lib_distribution_root}/libs'])  }}

如此,我們就可以在cpp文件夾中添加C++類,并使用opencv庫了,注意每添加一個cpp文件都要在CMakeList中add_library下添加一個源文件路徑(和通過mk文件編譯一樣)。

【4.OpenCV4Android和jni的聯動】

我們依舊需要通過java層調用android api來獲取攝像頭數據,比較簡便的方法是file->new->import module,選中OpenCV-android-sdk/sdk/java,把java版的opencv作為模塊添加進來,然后在我們的app上右鍵->open module settings->dependencies->'+'->add module dependency,把opencv模塊添加依賴,然后可以參考OpenCV-android-sdk/samples/tutorial-1-camerapreview來獲取攝像頭數據,java版的mat對象有一個GetNativeObjAddr()成員函數,獲取一個long類型的mat地址,作為參數傳遞給native層,即可利用這個地址改變java層的mat對象,進行一系列圖像處理。

以上這篇Android Studio中使用jni進行opencv開發的環境配置方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 航空| 宝应县| 湘潭市| 来安县| 台湾省| 望城县| 阜新市| 黑龙江省| 沙湾县| 涿州市| 阳泉市| 苏州市| 昌邑市| 南城县| 固镇县| 徐水县| 北碚区| 建始县| 西乡县| 兴宁市| 锡林郭勒盟| 东乡县| 崇州市| 额济纳旗| 聂荣县| 香河县| 达拉特旗| 长沙市| 临湘市| 桓台县| 黑山县| 海晏县| 台江县| 临武县| 鄂伦春自治旗| 汕尾市| 新泰市| 广元市| 长沙市| 来宾市| 新晃|