找不到名称为“default”的配置
可能出了什么问题?
我使用的是带有gradle 2.2.1的Android Studio 1.0。
找不到名称为“default”的配置
可能出了什么问题?
我使用的是带有gradle 2.2.1的Android Studio 1.0。
步骤(6)是因为Android Studio期望在 app/src/main/jniLibs
而不是旧版本的libs
文件夹中查找本地库。对于那些新接触Android OpenCV的人,请不要错过以下步骤:
static{ System.loadLibrary("opencv_java"); }
(注意:对于OpenCV版本3,您应该在此步骤中加载库opencv_java3
。)OpenCV是用C/C++编写的。Java包装器有:
sdk
安装目录,而你实际是在谈论随Android Open CV SDK
一起的目录。好的,我完成了第6步。我应该把static{ System.loadLibrary("opencv_java"); }
放在哪里? - Romantic Electronbuild.gradle
,如步骤3所示。 - paraditeinclude static{ System.loadLibrary("opencv_java"); }
应该在哪里添加? - Hasani使用项目向导(菜单:/文件/新建项目)创建一个新的Android Studio项目:
名为MainActivity的空白活动
您应该有一个存储此项目的cvtest1目录。(当您打开项目时,Android Studio的标题栏会显示cvtest1的位置。)
验证您的应用程序是否正确运行。尝试更改“Hello World”文本之类的内容以确认构建/测试周期对您是否OK。(我正在使用API 19设备的模拟器进行测试。)
下载Android v3.1.0的OpenCV包并在某个临时目录中解压缩它。(确保它是专门针对Android的软件包,而不仅仅是Java软件包。)我将称此目录为“unzip-dir”。在unzip-dir下,您应该有一个带有以arm...、mips...和x86...开头的子目录的sdk/native/libs目录。(每种类型的Android“体系结构”都有一个)
从Android Studio将OpenCV作为模块导入到您的项目中: 菜单:/文件/新建/导入模块:
单击下一步。您会看到一个带有三个复选框和关于jar、库和导入选项的问题的屏幕。所有三个应该被选中。单击完成。
Android Studio开始导入模块,并向您显示一个import-summary.txt文件,其中列出了未导入的内容(大多数是javadoc文件)和其他信息。
但是,您还会收到一个错误消息,指出“找不到哈希字符串为'android-14'的目标...”。这是因为您下载的OpenCV zip文件中的build.gradle文件说要使用android API版本14进行编译, 默认情况下,Android Studio v1.4.1没有该版本。
打开项目结构对话框(菜单:/文件/项目结构)。选择“app”模块,单击依赖项选项卡,并将:openCVLibrary310添加为模块依赖项。当您选择添加/模块依赖项时,它应该出现在您可以添加的模块列表中。 现在它将显示为一个依赖项,但是您将在事件日志中获得更多的cannot-find-android-14错误。
查看您的应用程序模块中的build.gradle文件。Android项目中有多个build.gradle文件。您想要的那个位于cvtest1/app目录中,从
请使用其他工具,如任何文件管理器,进入此目录。您还可以将项目视图从Android切换到Project Files,并按照以下截图找到此目录: 在其中有另一个build.gradle文件(在上面的截图中突出显示)。 使用步骤6中的四个值更新此文件。Resynch your project and then clean/rebuild it. (Menu:/Build/Clean_Project) It should clean and build without errors and you should see many references to :openCVLibrary310 in the 0:Messages screen.
At this point the module should appear in the project hierarchy as openCVLibrary310, just like app. (Note that in that little drop-down menu I switched back from Project View to Android View ). You should also see an additional build.gradle file under "Gradle Scripts" but I find the Android Studio interface a little bit glitchy and sometimes it does not do this right away. So try resynching, cleaning, even restarting Android Studio.
You should see the openCVLibrary310 module with all the OpenCV functions under java like in this screenshot:
Copy the {unzip-dir}/sdk/native/libs directory (and everything under it) to your Android project, to cvtest1/OpenCVLibrary310/src/main/, and then rename your copy from libs to jniLibs. You should now have a cvtest1/OpenCVLibrary310/src/main/jniLibs directory. Resynch your project and this directory should now appear in the project view under openCVLibrary310.
Go to the onCreate method of MainActivity.java and append this code:
if (!OpenCVLoader.initDebug()) {
Log.e(this.getClass().getSimpleName(), " OpenCVLoader.initDebug(), not working.");
} else {
Log.d(this.getClass().getSimpleName(), " OpenCVLoader.initDebug(), working.");
}
Then run your application. You should see lines like this in the Android Monitor: (I don't know why that line with the error message is there)
Now try to actually use some openCV code. In the example below I copied a .jpg file to the cache directory of the cvtest1 application on the android emulator. The code below loads this image, runs the canny edge detection algorithm and then writes the results back to a .png file in the same directory.
Put this code just below the code from the previous step and alter it to match your own files/directories.
String inputFileName="simm_01";
String inputExtension = "jpg";
String inputDir = getCacheDir().getAbsolutePath(); // use the cache directory for i/o
String outputDir = getCacheDir().getAbsolutePath();
String outputExtension = "png";
String inputFilePath = inputDir + File.separator + inputFileName + "." + inputExtension;
Log.d (this.getClass().getSimpleName(), "loading " + inputFilePath + "...");
Mat image = Imgcodecs.imread(inputFilePath);
Log.d (this.getClass().getSimpleName(), "width of " + inputFileName + ": " + image.width());
// if width is 0 then it did not read your image.
// for the canny edge detection algorithm, play with these to see different results
int threshold1 = 70;
int threshold2 = 100;
Mat im_canny = new Mat(); // you have to initialize output image before giving it to the Canny method
Imgproc.Canny(image, im_canny, threshold1, threshold2);
String cannyFilename = outputDir + File.separator + inputFileName + "_canny-" + threshold1 + "-" + threshold2 + "." + outputExtension;
Log.d (this.getClass().getSimpleName(), "Writing " + cannyFilename);
Imgcodecs.imwrite(cannyFilename, im_canny);
Run your application. Your emulator should create a black and white "edge" image. You can use the Android Device Monitor to retrieve the output or write an activity to show it.
需要注意的事项:
OpenCV error: Cannot load info library for OpenCV
2. java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/www.deven.com.opencv-2/base.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]]] couldn't find "libopencv_java3.so"
我已经按照您的步骤一步一步地操作了,这些错误是关于什么的? - Devendra Singh对于所有感觉上面答案中的步骤和截图让人望而却步的人,这个方法适用于 android studio 2.2.1
:
新建一个项目,随意命名并使用默认设置(最低SDK版本为15即可)。
从此处下载zip文件:https://sourceforge.net/projects/opencvlibrary/files/opencv-android/ (我下载了3.2.0版本,但可能有更新版本)。
解压缩zip文件,最好放在您的工作区文件夹中,但这并不重要。
在Android Studio
中,单击文件->新建->导入模块
,然后导航到\path_to_your_unzipped_file\OpenCV-android-sdk\sdk\java
,点击确定,然后接受所有默认对话框。
在您的app
模块的gradle
文件中,在依赖关系块中添加以下内容:
dependencies {
compile project(':openCVLibraryXYZ')
//rest of code
}
其中XYZ是您下载的确切版本,例如在我的情况下:
dependencies {
compile project(':openCVLibrary320')
//rest of code
}
Android Studio 3.4 + OpenCV 4.1
从这里下载最新的OpenCV zip文件(当前最新版本为4.1.0),并将其解压到您的工作区或其他文件夹中。
正常创建一个新的Android Studio项目。单击File->New->Import Module
,导航到/path_to_unzipped_files/OpenCV-android-sdk/sdk/java
,将模块名称设置为opencv
,单击下一步
并在屏幕中取消选择所有选项。
启用Project
文件视图模式(默认模式是Android
)。在opencv/build.gradle
文件中,将apply plugin: 'com.android.application'
更改为apply plugin: 'com.android.library'
并替换application ID "org.opencv"
为
minSdkVersion 21
targetSdkVersion 28
(根据app/build.gradle
文件中的值)。与Gradle文件同步项目。
将此字符串添加到app/build.gradle
文件中的依赖项块中。
dependencies {
...
implementation project(path: ':opencv')
...
}
再次选择 Android
文件视图模式。右键单击 app
模块,转到 New->Folder->JNI Folder
。选择更改文件夹位置并设置为 src/main/jniLibs/
。
在 Android
文件视图模式中再次选择 Project
,并将所有文件夹从 /path_to_unzipped_files/OpenCV-android-sdk/sdk/native/libs
复制到 app/src/main/jniLibs
。
在 Android
文件视图模式下,再次右键单击 app
模块,选择 Link C++ Project with Gradle
。选择构建系统 ndk-build
和 OpenCV.mk
文件的路径为 /path_to_unzipped_files/OpenCV-android-sdk/sdk/native/jni/OpenCV.mk
。
path_to_unzipped_files
不得包含任何空格,否则您将会出现错误!
要检查 OpenCV 初始化,请在 MainActivity 的 onCreate()
方法中添加 Toast 消息:
Toast.makeText(MainActivity.this, String.valueOf(OpenCVLoader.initDebug()), Toast.LENGTH_LONG).show();
如果初始化成功,您将在 Toast 消息中看到 true
,否则您将看到 false
。application ID "org.opencv"
字符串:minSdkVersion 21
和 targetSdkVersion 28
(根据 app/build.gradle 文件中的值)。 - Plo_Koon在你的build.gradle文件中
repositories {
jcenter()
}
implementation 'com.quickbirdstudios:opencv:4.1.0'
Download
Open Android Studio. Start a new project.
保留默认的目标设置。
使用“空活动”模板。将活动命名为MainActivity,并对应一个布局activity_main。 将您的设备插入并运行项目。在我们继续之前,它应该被成功安装和启动。
Add OpenCV dependency
进入“文件”->“新建”->“导入模块”,并提供一个路径到unpacked_OpenCV_package/sdk/java。模块名称将自动检测。在下一个窗口中,禁用Android Studio建议您的所有功能。
配置您的库build.gradle文件(openCVLibrary build.gradle)
apply plugin: 'com.android.library'
android {
compileSdkVersion 28
buildToolsVersion "28.0.3"
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
}
将库实现到项目中(应用程序build.gradle)
implementation project(':openCVLibrary330')
https://bintray.com/seesaa/maven/opencv#
https://github.com/seesaa/opencv-android
唯一的注意事项是我必须使用硬件调试设备,因为ARM模拟器对我来说运行得太慢了(正如AVD管理器所说),并且如存储库README中所述,此版本不包括x86或x86_64支持。static {
OpenCVLoader.initDebug();
}
我有点晚了。但是我也无法在Android Studio中加载最新版本(v:4.5.5)的OpenCV SDK,因为每个人都说要使用 文件-> 新建-> 导入模块,然后进入 opencv-4.5.5-android-sdk\OpenCV-android-sdk\sdk\java 文件夹,但当我导入时,我的导入OpenCV模块似乎没有任何内容,所以经过长时间的研究,我找到了解决方案,现在在这里分享。
如果您想要检查是否已成功添加OpenCV,请在MainActivity.kt或MainActivity.java中编写以下代码。
if (OpenCVLoader.initDebug()) {
Log.d("myTag", "OpenCV loaded")
}
Cheers!!
我只需要3个步骤就在Android Studio Arctic Fox上成功安装了OpenCV 3.4.15:
def opencvsdk='/path/to/opencv-3.4.1-android-sdk/OpenCV-android-sdk'
include ':opencv'
project(':opencv').projectDir = new File(opencvsdk + '/sdk')
点击 立即同步
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation project(':opencv')
点击 立即同步
完成!!!
验证:
将下面的代码添加到您的MainActivity.java文件中
static {
String TAG = "MainActivity";
if (OpenCVLoader.initDebug()){
Log.i(TAG, "opencv installed successfully");
}else{
Log.i(TAG, "opencv not installed");
}
}
来源:
解压缩zip文件后,进入以下位置:
opencv-3.4.1-android-sdk/OpenCV-android-sdk/sdk,使用任何文本查看器打开build.gradle文件。如果您向下滚动,将会发现类似于下面截图的内容。
native
目录。我是否漏掉了什么? - Romantic Electron