成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

AndroidStudio中怎么使用jni進(jìn)行opencv開(kāi)發(fā)環(huán)境配置

小編給大家分享一下Android Studio中怎么使用jni進(jìn)行opencv開(kāi)發(fā)環(huán)境配置,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

創(chuàng)新互聯(lián)是一家網(wǎng)站設(shè)計(jì)公司,集創(chuàng)意、互聯(lián)網(wǎng)應(yīng)用、軟件技術(shù)為一體的創(chuàng)意網(wǎng)站建設(shè)服務(wù)商,主營(yíng)產(chǎn)品:響應(yīng)式網(wǎng)站建設(shè)、高端網(wǎng)站設(shè)計(jì)全網(wǎng)營(yíng)銷(xiāo)推廣。我們專(zhuān)注企業(yè)品牌在網(wǎng)站中的整體樹(shù)立,網(wǎng)絡(luò)互動(dòng)的體驗(yàn),以及在手機(jī)等移動(dòng)端的優(yōu)質(zhì)呈現(xiàn)。成都網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì)、移動(dòng)互聯(lián)產(chǎn)品、網(wǎng)絡(luò)運(yùn)營(yíng)、VI設(shè)計(jì)、云產(chǎn)品.運(yùn)維為核心業(yè)務(wù)。為用戶(hù)提供一站式解決方案,我們深知市場(chǎng)的競(jìng)爭(zhēng)激烈,認(rèn)真對(duì)待每位客戶(hù),為客戶(hù)提供賞析悅目的作品,網(wǎng)站的價(jià)值服務(wù)。

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

其實(shí)找對(duì)了方法,用android studio配置環(huán)境要比eclipse簡(jiǎn)單很多,首先是預(yù)先準(zhǔn)備的環(huán)境:

1.Android studio,官網(wǎng)最新版,我用的是2.3.1;

2.OpenCV4Android,官網(wǎng)最新版,我用的3.2.0;

就這兩個(gè)就行了,不需要像eclipse一樣手動(dòng)配置jni啊adt啊一堆有的沒(méi)的。

配置步驟如下:

【1.新建項(xiàng)目】

Android Studio中怎么使用jni進(jìn)行opencv開(kāi)發(fā)環(huán)境配置

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

【2.編輯CMakeList.txt】

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

#項(xiàng)目路徑和opencv路徑

set(pathToProject D:/ImageProcess/JniExample)
set(pathToOpenCv D:/OpenCV-android-sdk)
#支持-std=gnu++11
set(CMAKE_VERBOSE_MAKEFILE on)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11")
#配置加載native依賴(lài)
include_directories(${pathToOpenCv}/sdk/native/jni/include)
#動(dòng)態(tài)方式加載
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)

可以看到配置里有一個(gè)${pathToProject}/app/src/main/jniLibs/${ANDROID_ABI}/libopencv_java3.so文件,我們暫時(shí)還沒(méi)有,需要我們手動(dòng)創(chuàng)建相應(yīng)的jniLibs目錄,這個(gè)目錄會(huì)被Android Studio自動(dòng)識(shí)別作為編譯jni代碼時(shí)的庫(kù)目錄。

Android Studio中怎么使用jni進(jìn)行opencv開(kāi)發(fā)環(huán)境配置

創(chuàng)建好如圖的目錄以后,將OpenCV-android-sdk\sdk\native\libs下的文件夾全部復(fù)制到j(luò)niLibs下面。

最后,在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配置】

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

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

在android節(jié)點(diǎn)的defaultconfig下添加:

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

注意這和AS自動(dòng)生成的externalNativeBuild的位置是不一樣的,兩條都要有,再在android節(jié)點(diǎn)下添加:

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

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

【4.OpenCV4Android和jni的聯(lián)動(dòng)】

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

以上是“Android Studio中怎么使用jni進(jìn)行opencv開(kāi)發(fā)環(huán)境配置”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

網(wǎng)頁(yè)標(biāo)題:AndroidStudio中怎么使用jni進(jìn)行opencv開(kāi)發(fā)環(huán)境配置
鏈接地址:http://jinyejixie.com/article26/jpohjg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供、網(wǎng)站收錄、自適應(yīng)網(wǎng)站、云服務(wù)器、網(wǎng)站排名、電子商務(wù)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設(shè)
汕尾市| 沙洋县| 阿拉善左旗| 塔河县| 天祝| 吴旗县| 剑阁县| 灵武市| 达拉特旗| 开阳县| 商城县| 烟台市| 珲春市| 阳曲县| 甘洛县| 邵武市| 安龙县| 乌海市| 珠海市| 堆龙德庆县| 额敏县| 哈尔滨市| 织金县| 房产| 安吉县| 望江县| 克东县| 海门市| 探索| 大理市| 宁强县| 高雄市| 抚顺市| 诏安县| 祁门县| 五河县| 平顺县| 白水县| 上栗县| 青铜峡市| 蒙自县|