我想使用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?谢谢.
我在我的Android应用程序中使用OpenCV2.4.7库.当应用程序启动时,它将转到应用程序的Google Play商店,名为OpenCV Manager.有没有办法在我的Android apk中集成这个应用程序,因为我们已经使用OpenCV库,为什么app需要再次使用OpenCV Engine?他们有什么办法整合这个引擎吗?
围绕获取原生opencv for android构建有很多问题和答案.有些使用gradle,有些则使用外部工具.对于原生OpenCV构建,这些众多,复杂且经常相互矛盾的描述可能会以一致的起点进行简化; 在创建Android Studio 2.2 Beta项目时,有一种方法可以包含C++支持:


此功能是在2016年6月左右添加的.有关详细信息,请参阅Android工具技术文档.
将Android Studio 2.2或更高版本与Gradle 2.2.0或更高版本的Android插件一起使用,您可以将C和C++代码编译到Gradle可以与您的APK打包的本机库中,从而为您的应用添加C和C++代码.然后,您的Java代码可以通过Java Native Interface(JNI)调用本机库中的函数.如果您想了解有关使用JNI框架的更多信息,请阅读适用于Android的JNI技巧.
检查Include C++ Support生成一个名为的外部构建文件CMakeLists.txt.
# Sets the minimum version of CMake required to build the native
# library. You should either keep the default value or only pass a
# value of 3.4.0 or lower.
cmake_minimum_required(VERSION 3.4.1)
# Creates and names a library, sets it as either STATIC
# or SHARED, and provides the relative paths to its source code.
# …Run Code Online (Sandbox Code Playgroud) windows java-native-interface cmake android-studio opencv4android
我正在尝试运行OpenCV教程1 - 使用此静态初始化添加OpenCV
我不希望安装单独的OpenCV Manager应用程序但是我得到了一个"OpenCV error: Cannot load info library for OpenCV."
我做了以下事情:
在其中添加了一个带有armeabi,armeabi-v7a和x86文件夹的libs文件夹(来自OpenCV-2.4.2-android-sdk/sdk/native/libs /)
{if (!OpenCVLoader.initDebug())}在私有Sample1View mView下面添加了静态代码;
删除了以下代码
if(!OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_2,this,mOpenCVCallBack))
什么似乎是问题?
我正在尝试将OpenCV模块添加到项目中,但我无法解决一些问题.这是我的app.gradle档案:
apply plugin: 'com.android.application'
android {
compileSdkVersion 17
buildToolsVersion "23.0.2"
defaultConfig {
applicationId "com.sveder.cardboardpassthrough"
minSdkVersion 8
targetSdkVersion 21
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
}
dependencies {
compile 'com.android.support:support-v4:18.0.0'
compile files('libs/cardboard.jar')
compile project(':openCVLibrary')
}
Run Code Online (Sandbox Code Playgroud)
这是build.gradleOpenCV(3.0)模块的文件:
apply plugin: 'com.android.library'
android {
compileSdkVersion 17
buildToolsVersion "23.0.2"
defaultConfig {
minSdkVersion 8
targetSdkVersion 21
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
}
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我的应用程序和OpenCV gradle文件匹配,但每当我尝试构建项目时,我都没有错误error: package android.hardware.camera2.我究竟做错了什么?
提前致谢.
刚开始研究OpenCV for Android.我注意到在运行使用它的应用程序之前,我需要安装一个名为OpenCV Manager的东西.
有没有办法将此经理与我的应用程序捆绑在一起,以便用户不必单独安装它?如果可能的话,这真的会有所帮助.
我还没有编写过使用OpenCV的应用程序,但我只是展望未来.
非常感谢.
我在使用Android Studio 1.3+的原生OpenCv 2.4.11(3.0.0也没问题)时遇到了麻烦,并且支持新的ndk.关于.mk文件的所有教程,但我想将它与新的实验gradle一起使用.
使用Kiran 在Android Studio中回答OpenCV
我在java中工作得很好.我也改变了
gradle-wrapper.properties:build.gradle(application
distributionUrl=https\://services.gradle.org/distributions/gradle-2.5-all.zip
):
classpath 'com.android.tools.build:gradle-experimental:0.2.0'
Run Code Online (Sandbox Code Playgroud)
的build.gradle(模块):
apply plugin: 'com.android.model.application'
model {
android {
compileSdkVersion = 23
buildToolsVersion = "23.0.0"
defaultConfig.with {
applicationId = "android.overloaded.nativetestv4"
minSdkVersion.apiLevel = 18
targetSdkVersion.apiLevel = 23
versionCode = 1
versionName = "1.0"
}
}
android.ndk{
moduleName = "mymodule"
ldLibs += ['log']
cppFlags += "-std=c++11"
cppFlags += "-fexceptions"
cppFlags += "-I${file("C:/DevAndroid/OpenCV-android-sdk/sdk/native/jni/include")}".toString()
cppFlags += "-I${file("C:/DevAndroid/OpenCV-android-sdk/sdk/native/jni/include/opencv")}".toString()
ldLibs += ["android", "EGL", "GLESv2", "dl", "log", "z"] //added z
stl = "stlport_static"//"gnustl_shared" …Run Code Online (Sandbox Code Playgroud) opencv android-ndk android-studio android-gradle-plugin opencv4android
我试图在Android Studio上测试OpenCV Android,我对如何包含NDK感到困惑.
我想要做的是运行OpenCV附带的样本.在提供的6个样本中,我成功地运行了4个样本.例外是面部检测和本机活动.
我怀疑原因是我没有正确设置我的NDK.
谷歌搜索我发现了一堆讨论,但并不真正了解它们.这是我第一次尝试使用NDK和OpenCV,我的Gradle理解是有限的.
我在.bash_profile中设置了一个环境变量
export ANDROID_NDK = pathTo/android-ndk-r9
我不明白如何把它带到工作室.
我看到jniFolder的引用,但不明白这些是什么,我现在应该关心. Stackoverflow.com/questions/17767557
tasks.withType(com.android.build.gradle.tasks.PackageApplication) { pkgTask ->
pkgTask.jniFolders = new HashSet<File>()
pkgTask.jniFolders.add(new File(projectDir, 'native-libs'))
Run Code Online (Sandbox Code Playgroud)
}
在build.gradle文件的末尾,我应该怎么做这个粘贴?
总之,我的问题是.
对于遇到这种情况的人来说,除了Xaviers anwser之外我是如何解决它的.首先,我在docs目录中阅读NDK附带的OVERVIEW.html.然后我将.mk和.cpp文件编译成.so文件.我在示例jni目录中进行了此操作.这在libs文件夹中创建了.so文件,我将其复制到Xavier给出的目标位置.
我正在开发一个应用程序来检测病变区域,为此我使用抓取来检测 ROI 并从图像中删除背景。但是,在某些图像中,它运行不佳。他最终没有很好地确定感兴趣区域的边界。分水岭可以更好地识别此类工作的边缘,但是我在从抓地到分水岭的过渡过程中遇到了困难。在处理抓取之前,用户使用 touchevent 在感兴趣的图像(伤口区域)周围标记一个矩形,以方便算法的工作。如下图。

但是,使用其他伤口图像,分割效果不佳,显示出 ROI 检测的缺陷。
在应用程序中使用抓取的图像
在桌面中使用分水岭的图像

这是代码:
private fun extractForegroundFromBackground(coordinates: Coordinates, currentPhotoPath: String): String {
// TODO: Provide complex object that has both path and extension
val width = bitmap?.getWidth()!!
val height = bitmap?.getHeight()!!
val rgba = Mat()
val gray_mat = Mat()
val threeChannel = Mat()
Utils.bitmapToMat(bitmap, gray_mat)
cvtColor(gray_mat, rgba, COLOR_RGBA2RGB)
cvtColor(rgba, threeChannel, COLOR_RGB2GRAY)
threshold(threeChannel, threeChannel, 100.0, 255.0, THRESH_OTSU)
val rect = Rect(coordinates.first, coordinates.second)
val fg = Mat(rect.size(), CvType.CV_8U)
erode(threeChannel, fg, Mat(), Point(-1.0, -1.0), 10)
val …Run Code Online (Sandbox Code Playgroud) 我尝试了很多在 Android Studio 上设置 OpenCV Android 库的教程和博客 ,其中一些在这里
在 Android Studio 上设置 OpenCV Android 库的初学者指南
但我无法根据上述解决方案进行配置
开始时,当我尝试从/OpenCV-android-sdk/sdk/javaandroid studio导入模块时没有显示模块名称编辑框,因此我必须添加“java”作为OpenCV模块名称
好的,导入名为 java 的模块后,我们必须添加依赖项,但在添加模块依赖项时未显示任何模块名称 java 或任何内容
任何人都知道我如何解决这个问题或任何正确的OpenCV配置步骤Android studio
我在用
安卓工作室-4.0
opencv-4.3.0-android-sdk