Ome*_*mez 60 android opencv gradle android-gradle-plugin
我想使用Android Studio使用Gradle构建工具开发应用程序.我无法插入OpenCV repo和库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
}
}
Run Code Online (Sandbox Code Playgroud)
如何在我的项目中添加OpenCV?谢谢.
Aja*_*y S 130
您可以在Android Studio中轻松完成此操作.
libraries在项目主目录下创建一个文件夹.例如,如果您的项目是OpenCVExamples,您将创建一个OpenCVExamples/libraries文件夹.
转到SDK"\ OpenCV-2.4.8-android-sdk\sdk"的位置,在这里找到该java文件夹,将其重命名为opencv.
现在将SDK中的完整opencv目录复制到刚刚创建的libraries文件夹中.
现在build.gradle在opencv目录中创建一个包含以下内容的文件
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']
}
}
}
Run Code Online (Sandbox Code Playgroud)在应用程序的主目录中编辑settings.gradle文件并添加以下行:
include ':libraries:opencv'
Run Code Online (Sandbox Code Playgroud)将您的项目与Gradle同步,它应该是这样的

右键单击您的项目,然后单击Open Module Settings左侧列表中的"选择模块",单击应用程序的模块,单击"依赖项"选项卡,然后单击"+"按钮以添加新的模块依赖项.

选择Module dependency.它将打开一个对话框,其中包含可供选择的模块列表; 选择":libraries:opencv".

jniLibs在该/app/src/main/位置创建一个文件夹,并jniLibs使用OpenCV SDK 中的*.so文件(armeabi,armeabi-v7a,mips,x86)复制所有文件夹.

单击确定.现在一切都完成了,去OpenCV享受.
Kir*_*ran 25
根据OpenCV docs(1),以下使用OpenCV管理器的步骤是将OpenCV用于生产运行的推荐方法.但是,OpenCV manager(2)是Google Play商店的额外安装.所以,如果您更喜欢自包含的apk(不使用OpenCV管理器)或者目前处于开发/测试阶段,我建议您回答/sf/answers/1919504611/.
在Open Studio中使用OpenCV管理器在Open Studio中使用OpenCV的建议步骤.
File -> Import Module,sdk/java在解压缩的opencv存档中选择文件夹. build.gradle项下的进口OpenCV的模块更新4场,以配合你的项目的build.gradle一个)compileSdkVersion B)buildToolsVersion C)的minSdkVersion和4)targetSdkVersion. Application -> Module Settings,然后选择Dependencies选项卡.单击+底部(或右侧)的图标,选择Module Dependency并选择导入的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);
}
}
Run Code Online (Sandbox Code Playgroud)
注意:在接收到onManagerConnected方法成功回调后,您才能进行OpenCV调用.在运行期间,系统将提示您从Play商店安装OpenCV管理器(如果尚未安装).在开发过程中,如果您无法访问Play商店或使用emualtor,请apk在下载的OpenCV sdk存档下的文件夹中使用相应的OpenCV manager apk .
优点
缺点
Mal*_*lte 11
由于OpenCV的集成是这样的努力,我们预先打包并通过JCenter在这里发布:https://github.com/quickbirdstudios/opencv-android
只需在模块的build.gradle依赖项部分中包含它
dependencies {
implementation 'com.quickbirdstudios:opencv:3.4.1'
}
Run Code Online (Sandbox Code Playgroud)
这在你的项目的build.gradle存储库部分
repositories {
jcenter()
}
Run Code Online (Sandbox Code Playgroud)
在gradle导入后你不会得到lint错误但是不要忘记在MainActivity中初始化这样的OpenCV库
public class MainActivity extends Activity {
static {
if (!OpenCVLoader.initDebug())
Log.d("ERROR", "Unable to load OpenCV");
else
Log.d("SUCCESS", "OpenCV loaded");
}
...
...
...
...
Run Code Online (Sandbox Code Playgroud)
如果您不想使用JavaCV,这对我有用...
从http://opencv.org/downloads.html下载OpenCV Android SDK
复制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",可能不再需要了.)
从这里复制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']
}
}
}
Run Code Online (Sandbox Code Playgroud)
在Project Root settings.gradle文件中,将其更改为如下所示:
include ':Project Name:libs:OpenCV', ':Project Name'
在项目根目录 - >项目名称 - 依赖项部分中的> build.gradle文件中添加以下行:
compile project(':Project Name:libs:OpenCV')
重建,您应该能够导入并开始在项目中使用OpenCV.
import org.opencv.android.OpenCVLoader;
...
if (!OpenCVLoader.initDebug()) {}
Run Code Online (Sandbox Code Playgroud)
我知道这有点像黑客,但我想我还是会发布它.
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
}
}
Run Code Online (Sandbox Code Playgroud)
这对我有用:)
小智 7
我发布了一篇关于如何使用Android Studio和Gradle构建包含OpenCV的Android NDK应用程序的新帖子.这里可以看到更多信息,我总结了两种方法:
(1)ndk-build在Gradle任务中运行
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
}
Run Code Online (Sandbox Code Playgroud)
(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
这里可以看到更多信息
小智 5
它也适用于Android Studio 1.2 + OpenCV-2.4.11-android-sdk(.zip).
只需执行以下操作:
1)按照以"您可以在Android Studio中轻松完成此操作"开头的答案.按照以下步骤将OpenCV作为库添加到项目中.由TGMCians.
2)修改<yourAppDir>\libraries\opencv你新创建的文件夹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']
}
}
}
Run Code Online (Sandbox Code Playgroud)
3)*.so目录中的文件"armeabi", "armeabi-v7a", "mips", "x86"可以在(默认OpenCV位置)下找到:( ..\OpenCV-2.4.11-android-sdk\OpenCV-android-sdk\sdk\native\libsTGMCians的答案中的步骤9).
享受,如果这有帮助,请给予积极的声誉.我需要50才能直接回答答案(19左):)
| 归档时间: |
|
| 查看次数: |
95084 次 |
| 最近记录: |