因為軟件競賽的項目會用到Opencv for Android,所以就研究了一下如何在Android Studio上配置Opencv4Android
環境概述:
Android Studio 2.3 OpenCV-2.4.11-android-sdk
接下來主要是詳細的講解每一步的配置,然后再最后我會放上我做的一個示例項目
1.首先是下載OpenCV-2.4.11-android-sdk
不知道為什么之前上Opencv官網發現Android部分掛了,找了半天沒找着下載的地方,最后終於在SourceForge上找到了,所以為了方便大家不用到處找,我把文件傳到七牛雲了
http://onhdz331f.bkt.clouddn.com/OpenCV-2.4.11-android-sdk.zip
如果不放心的話,大家也可以到opencv官網上去下載這個sdk。
2.依據博友gloomyfish的文章進行配置,博主的視頻當中的操作是對的,但是他的文章有些錯誤,會導致配置失敗,或者說的不太清楚的的地方,我下面會補充講下
OpenCV On Android開發 - Android Studio上環境配置
(1)錯誤更正 “SDK下面native文件下所有的文件都copy到你創建好的項目libs目錄下”這句話有錯,應該改為SDK\native\libs文件下所有的文件都copy到項目libs目錄下,這樣問題解決
(2)錯誤更正 最后要加到build.gradle(Module:app)的那句
compile fileTree(dir: "$buildDir/native-libs", include: 'native-libs.jar')
應該是要放到build.gradle(Module:app)中的dependencies{}里面,而且不是像他所說的第一行,而是應該放在第二行,也就是這句
compile fileTree(include: ['*.jar'], dir: 'libs')
的下一行。
(3)說得不太清楚的:要放到build.gradle(Module:app)的這部分代碼,是直接加在dependencies{}后面的。
1 task nativeLibsToJar(type: Jar, description: 'create a jar archive of the native libs') {
2 destinationDir file("$buildDir/native-libs") 3 baseName 'native-libs' 4 from fileTree(dir: 'libs', include: '**/*.so') 5 into 'lib/' 6 } 7 8 tasks.withType(JavaCompile) { 9 compileTask -> compileTask.dependsOn(nativeLibsToJar) 10 }
下面給出完整的build.gradle(Module:app)文件,並加上了注釋,表現了應該如何更改
1 apply plugin: 'com.android.application' 2 3 android { 4 compileSdkVersion 25//在不同的android版本中,sdk版本不同 5 buildToolsVersion "25.0.2" 6 defaultConfig { 7 applicationId "com.example.a18350.opencvtest" 8 minSdkVersion 19 9 targetSdkVersion 25 10 versionCode 1 11 versionName "1.0" 12 testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 13 } 14 buildTypes { 15 release { 16 minifyEnabled false 17 proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 18 } 19 } 20 } 21 22 dependencies { 23 compile fileTree(include: ['*.jar'], dir: 'libs') 24 compile fileTree(dir: "$buildDir/native-libs", include: 'native-libs.jar')//那句話是加在這里的,而不是加在第一行 25 androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { 26 exclude group: 'com.android.support', module: 'support-annotations' 27 }) 28 compile 'com.android.support:appcompat-v7:25.3.1' 29 compile 'com.android.support.constraint:constraint-layout:1.0.2' 30 testCompile 'junit:junit:4.12' 31 compile project(':openCVLibrary2411') 32 } 33 //請將兩個task放在這里,也就是dependencies后面 34 task nativeLibsToJar(type: Jar, description: 'create a jar archive of the native libs') { 35 destinationDir file("$buildDir/native-libs") 36 baseName 'native-libs' 37 from fileTree(dir: 'libs', include: '**/*.so') 38 into 'lib/' 39 } 40 41 tasks.withType(JavaCompile) { 42 compileTask -> compileTask.dependsOn(nativeLibsToJar) 43 }
(4)請注意,還應該要更新build.gradle(module:OpenCVLibrary2411)信息,打開build.gradle(module:OpenCVLibrary2411),修改文件中的
1)compileSdkVersion 2)buildToolsVersion 3) minSdkVersion 4)targetSdkVersion
將其內容與build.gradle(Module:app)中信息相一致,這里做的事情其實是調整sdk的版本,使得編譯opencv的sdk,構建工具的版本和app相同。
大功告成,這里放上運行成功的項目地址
http://git.oschina.net/ylzheng/opencv4android_example
大家有不明白的可以看下這個項目,如果有任何問題的話,歡迎在評論中指出。
作者: Elliott Zheng
出處: http://www.cnblogs.com/elliottzheng/p/6695446.html>
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出, 原文鏈接 如有問題, 可郵件(elliott.zheng@foxmail.com)咨詢.