如何使用Gradle构build工具在android studio中使用opencv?
我想用Android Studio来开发一个使用Gradle构build工具的应用程序。 我不能在build.gradle上插入OpenCV build.gradle和库。 我的.gradle文件如下所示: 
 buildscript { repositories { mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:0.5.+' } } apply plugin: 'android' repositories { mavenCentral() } dependencies { compile 'com.android.support:support-v4:13.0.+' } android { compileSdkVersion 17 buildToolsVersion "17.0.0" defaultConfig { minSdkVersion 7 targetSdkVersion 16 } } 
我如何在我的项目中添加OpenCV? 谢谢。
您可以在Android Studio中轻松完成此操作。
按照以下步骤在您的项目中添加Open CV作为库。
- 
在项目主目录下创build一个 libraries文件夹。 例如,如果您的项目是OpenCVExamples,您将创build一个OpenCVExamples/libraries文件夹。
- 
转到您有SDK“\ OpenCV-2.4.8-android-sdk \ sdk”的位置,在这里您将find java文件夹,将其重命名为opencv。
- 
现在将完整的opencv目录从SDK复制到刚创build的库文件夹中。 
- 
现在使用以下内容在 opencv目录中创build一个build.gradle文件apply plugin: 'android-library' buildscript { repositories { mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:0.9.+' } } android { compileSdkVersion 19 buildToolsVersion "19.0.1" defaultConfig { minSdkVersion 8 targetSdkVersion 19 versionCode 2480 versionName "2.4.8" } sourceSets { main { manifest.srcFile 'AndroidManifest.xml' java.srcDirs = ['src'] resources.srcDirs = ['src'] res.srcDirs = ['res'] aidl.srcDirs = ['src'] } } }
- 
在您的应用程序主目录中编辑您的settings.gradle文件并添加以下行: include ':libraries:opencv'
- 
同步您的项目与Gradle,它应该看起来像这样  
- 
右键点击你的项目,然后点击 Open Module Settings然后从左侧列表中select模块,点击你的应用程序的模块,点击依赖项标签,然后点击+button添加一个新的模块依赖项。 
- 
select Module dependency。 它将打开一个对话框,列出可供select的模块; select“:库:opencv”。 
- 
在 /app/src/main/location中创build一个jniLibs文件夹,并从OpenCV SDK的jniLibs复制带有* .so文件(armeabi,armeabi-v7a,mips,x86)的所有文件夹。 
- 
点击OK。 现在一切都完成了,去OpenCV享受。 
根据OpenCV文档( 1 ),以下使用OpenCVpipe理器的步骤是使用OpenCV进行生产运行的推荐方法。 但是,OpenCVpipe理器( 2 )是来自Google Play商店的额外安装。 所以,如果你喜欢一个自包含的apk(不使用OpenCVpipe理器),或者目前处于开发/testing阶段,我build议在https://stackoverflow.com/a/27421494/1180117回答。;
推荐使用OpenCVpipe理器在Android Studio中使用OpenCV的步骤。
- 从OpenCV.org下载OpenCV Android sdk( 3 )
-  从File -> Import Module,在解压缩的opencv归档中selectsdk/java文件夹。
-  更新导入的OpenCV模块下的build.gradle,更新4个字段以匹配项目的build.gradlea)compileSdkVersion b)buildToolsVersion c)minSdkVersion和4)targetSdkVersion。
-  按Application -> Module Settings添加模块依赖项,然后selectDependencies选项卡。 点击底部(或右侧)的+图标,selectModule Dependency,select导入的OpenCV模块。
作为最后一步,在您的Activity类中,添加下面的代码片段。
  public class SampleJava extends Activity { private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) { @Override public void onManagerConnected(int status) { switch(status) { case LoaderCallbackInterface.SUCCESS: Log.i(TAG,"OpenCV Manager Connected"); //from now onwards, you can use OpenCV API Mat m = new Mat(5, 10, CvType.CV_8UC1, new Scalar(0)); break; case LoaderCallbackInterface.INIT_FAILED: Log.i(TAG,"Init Failed"); break; case LoaderCallbackInterface.INSTALL_CANCELED: Log.i(TAG,"Install Cancelled"); break; case LoaderCallbackInterface.INCOMPATIBLE_MANAGER_VERSION: Log.i(TAG,"Incompatible Version"); break; case LoaderCallbackInterface.MARKET_ERROR: Log.i(TAG,"Market Error"); break; default: Log.i(TAG,"OpenCV Manager Install"); super.onManagerConnected(status); break; } } }; @Override protected void onResume() { super.onResume(); //initialize OpenCV manager OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_9, this, mLoaderCallback); } } 
 注意: 您只能在onManagerConnected方法上收到成功callback后才能进行OpenCV调用 。 在运行期间,如果尚未安装OpenCVpipe理器,系统将提示您从Play商店安装OpenCVpipe理器。 在开发过程中,如果您无法访问商店或者在开发环境中,请在下载的OpenCV sdk归档文件的apk文件夹中使用相应的OpenCVpipe理器apk。 
优点
- 应用程序的大小减less了大约40 MB(也考虑升级)。
- OpenCVpipe理器会为您的硬件安装优化的二进制文件,从而有助于提高速度。
- 升级到OpenCVpipe理器可能会将您的应用程序从OpenCV中的错误中拯救出来。
- 不同的应用程序可以共享相同的OpenCV库。
缺点
- 最终用户体验 – 可能不喜欢您的应用程序的安装提示。
如果你不想使用JavaCV这对我来说…
步骤1-下载资源
从http://opencv.org/downloads.html下载OpenCV Android SDK
第2步 – 将OpenCV二进制文件复制到APK中
复制libopencv_info.so&libopencv_java.so
 OpenCV-2.?.?-android-sdk -> sdk -> native -> libs -> armeabi-v7a 
至
 Project Root -> Your Project -> lib - > armeabi-v7a 
将lib文件夹拉起来,然后将该zip文件重命名为whatever-v7a.jar。
复制这个.jar文件并把它放在你的项目的这里
 Project Root -> Your Project -> libs 
将这一行添加到依赖项部分中的项目build.gradle中
 compile files('libs/whatever-v7a.jar') 
当你编译时,你可能会看到你的.apk大约4mb。
(如果你想支持ARMv6,可能不再需要,重复“armeabi”。)
第3步 – 将java sdk添加到您的项目中
从这里复制java文件夹
 OpenCV-2.?.?-android-sdk -> sdk 
至
  Project Root -> Your Project -> libs (与你的.jar文件相同的位置); 
(您可以将'java'文件夹名称重命名为'OpenCV')
在这个刚刚复制的文件夹中添加一个典型的build.gradle文件; 我用这个:
 buildscript { repositories { mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:0.6.+' } } apply plugin: 'android-library' repositories { mavenCentral(); } android { compileSdkVersion 19 buildToolsVersion "19" defaultConfig { minSdkVersion 15 targetSdkVersion 19 } sourceSets { main { manifest.srcFile 'AndroidManifest.xml' java.srcDirs = ['src'] resources.srcDirs = ['src'] aidl.srcDirs = ['src'] renderscript.srcDirs = ['src'] res.srcDirs = ['res'] assets.srcDirs = ['assets'] } } } 
在您的项目根目录settings.gradle文件中改变它看起来像这样:
 include ':Project Name:libs:OpenCV', ':Project Name' 
在你的项目根目录 – >项目名称 – > build.gradle文件的依赖部分添加这一行:
 compile project(':Project Name:libs:OpenCV') 
第4步 – 在您的项目中使用OpenCV
重build,你应该能够导入并开始在你的项目中使用OpenCV。
 import org.opencv.android.OpenCVLoader; ... if (!OpenCVLoader.initDebug()) {} 
我知道这是否有点黑客,但我想我会张贴无论如何。
 buildscript { repositories { mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:0.5.+' } } apply plugin: 'android' repositories { mavenCentral() maven { url 'http://maven2.javacv.googlecode.com/git/' } } dependencies { compile 'com.android.support:support-v4:13.0.+' compile 'com.googlecode.javacv:javacv:0.5' instrumentTestCompile 'junit:junit:4.4' } android { compileSdkVersion 14 buildToolsVersion "17.0.0" defaultConfig { minSdkVersion 7 targetSdkVersion 14 } } 
这是为我工作:)
我发布了一篇关于如何使用Android Studio和Gradle构build包含OpenCV的Android NDK应用程序的新文章。 更多的信息可以在这里看到,我总结了两种方法:
  (1)在Gradle任务中运行ndk-build 
 sourceSets.main.jni.srcDirs = [] task ndkBuild(type: Exec, description: 'Compile JNI source via NDK') { ndkDir = project.plugins.findPlugin('com.android.application').getNdkFolder() commandLine "$ndkDir/ndk-build", 'NDK_PROJECT_PATH=build/intermediates/ndk', 'NDK_LIBS_OUT=src/main/jniLibs', 'APP_BUILD_SCRIPT=src/main/jni/Android.mk', 'NDK_APPLICATION_MK=src/main/jni/Application.mk' } tasks.withType(JavaCompile) { compileTask -> compileTask.dependsOn ndkBuild } 
  (2)使用外部工具运行ndk-build 
 参数: NDK_PROJECT_PATH=$ModuleFileDir$/build/intermediates/ndk NDK_LIBS_OUT=$ModuleFileDir$/src/main/jniLibs NDK_APPLICATION_MK=$ModuleFileDir$/src/main/jni/Application.mk APP_BUILD_SCRIPT=$ModuleFileDir$/src/main/jni/Android.mk V=1 
更多的信息可以在这里看到
它也适用于Android Studio 1.2 + OpenCV-2.4.11-android-sdk(.zip)。
只要做到以下几点:
1)按照以下的答案开始:“您可以在Android Studio中轻松完成此操作,按照以下步骤将OpenCV作为库添加到您的项目中。 由TGMCians。
  2)在<yourAppDir>\libraries\opencv文件夹中修改新创build的build.gradle (TGMCians的答案中的第4步, 适应于OpenCV2.4.11-android-sdk并使用gradle 1.1.0 ): 
 apply plugin: 'android-library' buildscript { repositories { mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:1.1.0' } } android { compileSdkVersion 21 buildToolsVersion "21.1.2" defaultConfig { minSdkVersion 8 targetSdkVersion 21 versionCode 2411 versionName "2.4.11" } sourceSets { main { manifest.srcFile 'AndroidManifest.xml' java.srcDirs = ['src'] resources.srcDirs = ['src'] res.srcDirs = ['res'] aidl.srcDirs = ['src'] } } } 
  3)* .so文件位于目录"armeabi", "armeabi-v7a", "mips", "x86"可以在(默认的OpenCV-location)下find: ..\OpenCV-2.4.11-android-sdk\OpenCV-android-sdk\sdk\native\libs (TGMCians的答案中的第9步)。 
享受,如果这有帮助,请给予积极的声誉。 我需要50回答直接回答(19左):)
这些是在Android Studio 1.2中使用OpenCV所必需的步骤:
- 下载OpenCV并提取存档
- 在Android Studio中打开您的应用程序项目
- 进入文件 – >新build – >导入模块…
-  在你之前提取的目录中selectsdk/java
-  将模块名称设置为opencv
- 按下一步,然后完成
-  在导入的OpenCV模块下打开build.gradle并将compileSdkVersion和buildToolsVersion更新为您机器上的版本
- 
将 compile project(':opencv')到您的应用程序build.gradledependencies { ... compile project(':opencv') }
- 
按下与Gradle文件同步项目 
AndroidManifest.xml文件中需要以下权限和function,否则将出现以下对话框
“看来你的设备不支持摄像头(或被locking),应用程序将被closures”
  <uses-permission android:name="android.permission.CAMERA"/> <uses-feature android:name="android.hardware.camera" android:required="false"/> <uses-feature android:name="android.hardware.camera.autofocus" android:required="false"/> <uses-feature android:name="android.hardware.camera.front" android:required="false"/> <uses-feature android:name="android.hardware.camera.front.autofocus" android:required="false"/> 
我已经将OpenCV SDK中的Java项目导入到Android Studio gradle项目中,并在https://github.com/ctodobom/OpenCV-3.1.0-Android
 您可以将它包含在您的项目中,只需在jitpack.io服务中添加两行到build.gradle文件即可。 
OpenCV,Android Studio 1.4.1,gradle-experimental插件0.2.1
没有其他的答案帮助我。 这是为我工作的。 我正在使用opencv的tutorial-1样本,但是我会在我的项目中使用NDK,所以我使用的Gradle实验插件与Gradle插件的结构不同。
应该安装Android工作室,通过Android SDKpipe理器安装Android NDK,并下载并解压缩OpenCV Android SDK 。
这是在bash脚本块,以保持紧凑,但完整。 这也是所有的命令行上,因为我遇到的大问题是,随着IDE的发展,in-IDE指令已经过时了。
首先设置OpenCV SDK根目录的位置。
 export OPENCV_SDK=/home/user/wip/OpenCV-2.4.11-android-sdk cd $OPENCV_SDK 
创build你的gradle构build文件…
首先是OpenCV库
 cat > $OPENCV_SDK/sdk/java/build.gradle <<'===' apply plugin: 'com.android.model.library' model { android { compileSdkVersion = 23 buildToolsVersion = "23.0.2" defaultConfig.with { minSdkVersion.apiLevel = 8 targetSdkVersion.apiLevel = 23 } } android.buildTypes { release { minifyEnabled = false } debug{ minifyEnabled = false } } android.sources { main.manifest.source.srcDirs += "." main.res.source.srcDirs += "res" main.aidl.source.srcDirs += "src" main.java.source.srcDirs += "src" } } === 
然后告诉教程示例将库标记为以及在何处find它。
 cat > $OPENCV_SDK/samples/tutorial-1-camerapreview/settings.gradle <<'===' include ':openCVLibrary2411' project(':openCVLibrary2411').projectDir = new File('../../sdk/java') === 
创build教程的构build文件。
 cat > $OPENCV_SDK/samples/tutorial-1-camerapreview/build.gradle <<'===' buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle-experimental:0.2.1' } } allprojects { repositories { jcenter() } } apply plugin: 'com.android.model.application' model { android { compileSdkVersion = 23 buildToolsVersion = "23.0.2" defaultConfig.with { applicationId = "org.opencv.samples.tutorial1" minSdkVersion.apiLevel = 8 targetSdkVersion.apiLevel = 23 } } android.sources { main.manifest.source.srcDirs += "." main.res.source.srcDirs += "res" main.aidl.source.srcDirs += "src" main.java.source.srcDirs += "src" } android.buildTypes { release { minifyEnabled = false proguardFiles += file('proguard-rules.pro') } debug { minifyEnabled = false } } } dependencies { compile project(':openCVLibrary2411') } === 
您的构build工具版本需要正确设置。 这是一个简单的方法来看看你已经安装。 (您可以通过Android SDKpipe理器安装其他版本)。 如果您没有23.0.2,请更改buildToolsVersion。
 echo "Your buildToolsVersion is one of: " ls $ANDROID_HOME/build-tools 
将第一行的环境variables更改为您的版本号
 REP=23.0.2 #CHANGE ME sed -i.bak s/23\.0\.2/${REP}/g $OPENCV_SDK/sdk/java/build.gradle sed -i.bak s/23\.0\.2/${REP}/g $OPENCV_SDK/samples/tutorial-1-camerapreview/build.gradle 
最后,设置正确的gradle包装。 Gradle需要一个干净的目录来做到这一点。
 pushd $(mktemp -d) gradle wrapper --gradle-version 2.5 mv -f gradle* $OPENCV_SDK/samples/tutorial-1-camerapreview popd 
你现在应该全部设置。 您现在可以使用Android Studio浏览到此目录并打开项目。
使用以下命令在命令行上构buildtutoral:
 ./gradlew assembleDebug 
它应该build立你的apk,把它放在./build/outputs/apk