相关疑难解决方法(0)

OpenCV for Android可以利用标准C++支持在Android Studio 2.2 for Windows上获得本机构建支持吗?

围绕获取原生opencv for android构建有很多问题和答案.有些使用gradle,有些则使用外部工具.对于原生OpenCV构建,这些众多,复杂且经常相互矛盾的描述可能会以一致的起点进行简化; 在创建Android Studio 2.2 Beta项目时,有一种方法可以包含C++支持: 包括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

27
推荐指数
2
解决办法
9923
查看次数

未定义的引用'cv :: initModule_nonfree()'在Android中

我想创建一个Android应用程序,它使用原生(使用C++)BOW + SVM进行预测.不幸的是我在构建原生部分时遇到了问题.由于OpenCV SDK for Android中不包含非免费模块,因此我需要使用本教程自行构建模块.好像我成功构建了.so文件.这是输出:

[armeabi-v7a] Prebuilt       : libopencv_java.so <= /home/crash-id/Development/SDK/OpenCV-2.4.9-android-sdk/sdk/native/jni/../libs/armeabi-v7a/
[armeabi-v7a] SharedLibrary  : libnonfree.so
[armeabi-v7a] Install        : libnonfree.so => libs/armeabi-v7a/libnonfree.so
[armeabi-v7a] Install        : libopencv_java.so => libs/armeabi-v7a/libopencv_java.so
Run Code Online (Sandbox Code Playgroud)

所以当我必须将这个.so文件添加到我的项目时,问题就出现了.我将libnonfree.so添加到了我的jni文件夹中.然后我编辑了Android.mk.在这里,我提供我的.mk文件.

Android.mk

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)
LOCAL_MODULE    := nonfree_prebuilt
LOCAL_SRC_FILES := libnonfree.so
include $(PREBUILT_SHARED_LIBRARY)


include $(CLEAR_VARS)
OPENCV_CAMERA_MODULES   := on
OPENCV_INSTALL_MODULES  := on

include /home/crash-id/Development/SDK/OpenCV-2.4.9-android-sdk/sdk/native/jni/OpenCV.mk
#LOCAL_SHARED_LIBRARIES := nonfree_prebuilt #if I add this, it says undefined reference for everything in the cv namespace.
LOCAL_SRC_FILES  := SVMDetector.cpp
LOCAL_MODULE     := svm_detector

LOCAL_C_INCLUDES …
Run Code Online (Sandbox Code Playgroud)

linker android opencv android-ndk opencv4android

7
推荐指数
1
解决办法
4910
查看次数