背景:我目前正在Android Studio上为Moverio BT 200增强现实眼镜开发应用程序.我正在使用OpenCV,特别是库的arUco模块.该模块必须与NDK一起使用.此外,它不在稳定版本上,所以我自己编译了库(使用本指南:https://zami0xzami.wordpress.com/2016/03/17/building-opencv-for-android-from-source/) .图书馆的建设进展顺利.之后,我做了一个android studio项目(customOCVtest).我在使用OpenCV与Android Studio和NDK时总是这样做,除了这次是使用自定义构建.我检查了库是否正确加载:
private static final String OCVdevTAG = "OCVmainAct";
static {
System.loadLibrary("native-lib");
if(!OpenCVLoader.initDebug()) {
Log.d(OCVdevTAG, "OpenCV not loaded");
} else {
Log.d(OCVdevTAG, "OpenCV loaded");
}
}
Run Code Online (Sandbox Code Playgroud)
我构建时确实加载了库.
现在出现了问题:当我尝试在我的本机代码中实际使用arUco模块时(这是我的native-lib.cpp):
#include <jni.h>
#include <string>
#include <opencv2/aruco.hpp>
extern "C" {
jstring
Java_com_jambonsama_customocvtest_MainActivity_stringFromJNI(
JNIEnv *env,
jobject /* this */) {
std::string hello = "Hello from C++";
cv::Ptr<cv::aruco::Dictionary> dict = cv::aruco::getPredefinedDictionary(cv::aruco::DICT_6X6_250);
cv::Mat marker;
cv::aruco::drawMarker(dict, 25, 200, marker, 1);
return env->NewStringUTF(hello.c_str());
}
}
Run Code Online (Sandbox Code Playgroud)
gradle sync工作,但我无法构建.我收到以下错误:
Error:FAILURE: Build …Run Code Online (Sandbox Code Playgroud)