gpt4 book ai didi

android - 在 Android Studio 中找不到 opencv2

转载 作者:搜寻专家 更新时间:2023-11-01 07:43:46 26 4
gpt4 key购买 nike

我正在尝试在 Android Studio 中编写一个 C++ 文件,我想在我的项目中使用 OpenCV。

但是,当我尝试使用以下包含时,出现错误提示 Cannot Find 'opencv2'

#include <opencv2/core.hpp>
#include <opencv2/imgproc.hpp>
#include <opencv2/features2d.hpp>

要在 Android 中设置 OpenCV,您必须执行以下步骤,found here , 在 Android Studio 中使用 OpenCV 的 Java 部分。

据我所知,要在 Android Studio 中使用 OpenCV 的 C++ 部分,您必须将 Android.mkApplication.mk 添加到包含您的文件夹的文件夹中 native 代码。

我的 Android.mk 文件如下所示。

LOCAL_PATH := $(call my-dir)

CVROOT := C:/Users/Dan/Documents/Repos/Android-Studio/Assets/opencv-3.4.1-android-sdk/OpenCV-android-sdk/sdk/native/jni

include $(CLEAR_VARS)
OPENCV_CAMERA_MODULES:=on
OPENCV_INSTALL_MODULES:=on
OPENCV_LIB_TYPE:=SHARED
include $(CVROOT)/OpenCV.mk

LOCAL_MODULE := app
LOCAL_SRC_FILES := native-lib.cpp
LOCAL_LDLIBS += -llog -ldl

include $(BUILD_SHARED_LIBRARY)

我的 Application.mk 文件如下所示。

APP_STL := gnustl_static
APP_CPPFLAGS := -frtti -fexceptions
APP_ABI := armeabi-v7a
APP_PLATFORM := android-27

我是否在将我的项目设置为在 Android 上使用 OpenCV 的 C++ 部分做错了什么?


其他信息是否有所作为

我的项目大纲如下所示。

enter image description here

我的 gradles 如下所示

应用模块

apply plugin: 'com.android.application'

android {
compileSdkVersion 27
defaultConfig {
applicationId "com.test.test.esra"
minSdkVersion 24
targetSdkVersion 27
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
externalNativeBuild {
cmake {
cppFlags "-frtti -fexceptions"
}
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
externalNativeBuild {
cmake {
path "CMakeLists.txt"
}
}
}

dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'com.android.support:appcompat-v7:27.1.0'
implementation 'com.android.support.constraint:constraint-layout:1.0.2'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.1'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
// Room - Managing local databases
implementation 'android.arch.persistence.room:runtime:1.0.0'
annotationProcessor "android.arch.persistence.room:compiler:1.0.0"
//Jetbrains Annotations
implementation 'org.jetbrains:annotations-java5:15.0'
implementation project(':openCVLibrary341')
}

openCVLibrary341 模块

apply plugin: 'com.android.library'

android {
compileSdkVersion 27

defaultConfig {
minSdkVersion 24
targetSdkVersion 27
}

buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
}

项目 build.gradle

buildscript {

repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.0.1'


// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}

allprojects {
repositories {
google()
jcenter()
}
}

task clean(type: Delete) {
delete rootProject.buildDir
}

最佳答案

对于遇到同样问题的其他人来说,这个问题很容易解决。

您不再需要 .mk 文件,因此可以删除它们。

如果您是从头开始一个项目,请确保您已安装 Android NDK 和 CMake 并为您的项目启用它们。

按照此 answer 中发布的初始步骤进行操作后在 Android 上设置 OpenCV 的 Java 部分。您将需要更改您的app 模块的 build gradle 以反射(reflect)下面的代码段。

defaultConfig {
...
externalNativeBuild {
cmake {
cppFlags "-frtti -fexceptions"
abiFilters 'x86', 'x86_64', 'armeabi', 'armeabi-v7a', 'arm64-v8a', 'mips', 'mips64'
}
}
}
sourceSets {
main {
jniLibs.srcDirs = ['src/main/jniLibs']
}
}

然后您要编辑文件 CMakeLists.txt。在此文件中,您希望在 cmake_minimum_required(VERSION X.X.X) 行下包含以下代码。

此外,您还需要将 lib_opencv 添加到 CMakeLists.txt 底部附近的 target_link_libraries 中。这将有助于防止 undefined reference 错误。

include_directories(your-path-to/OpenCV-android-sdk/sdk/native/jni/include)
add_library( lib_opencv SHARED IMPORTED )
set_target_properties(lib_opencv PROPERTIES IMPORTED_LOCATION ${CMAKE_CURRENT_SOURCE_DIR}/src/main/jniLibs/${ANDROID_ABI}/libopencv_java3.so)

...

target_link_libraries( # Specifies the target library.
native-lib

# OpenCV lib
lib_opencv

# Links the target library to the log library
# included in the NDK.
${log-lib} )

确保将 your-path-to 替换为 OpenCV for Android 的实际路径。

最后,清理您的项目并刷新链接的 C++ 项目。这将消除错误。

我从这个非常好的 GitHub page 得到了这些信息.感谢 leadrien


澄清您不再需要.mk 文件。这对于 Android Studio 3 是正确的。我没有在旧版本的 Android Studio 或 Eclipse 上对此进行测试,因此您可能需要这些 IDE 的 .mk 文件。

关于android - 在 Android Studio 中找不到 opencv2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49244078/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com