我正在开发一个使用 opencv 库的 android 应用程序,它是 opencv 管理器应用程序。它需要预先安装opencv管理器,我想将opencv管理器集成到我的应用程序中,这样就不需要在外部安装opencv管理器
提前致谢
1 - 将 OpenCV 库项目添加到您的工作区(使用菜单文件 -> 导入 -> 工作区中的现有项目。)
2 - 在应用程序项目中添加对 OpenCV Java SDK 的引用项目 -> 属性 -> Android -> 库 -> 添加选择 OpenCV 库 - 2.4.8。
3 - 添加一个文件夹并将其命名为“jni”
4 - 将 Android.mk 文件添加到 jni 文件夹中。它的主体应该如下所示:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
# OpenCV
OPENCV_CAMERA_MODULES:=on
OPENCV_INSTALL_MODULES:=on
OPENCV_LIB_TYPE:=STATIC
include ../../sdk/native/jni/OpenCV.mk
5 - 将 Application.mk 文件添加到 jni 文件夹中。它的主体应该如下所示:
APP_STL := gnustl_static
APP_CPPFLAGS := -frtti -fexceptions
APP_ABI := armeabi-v7a
APP_PLATFORM := android-9
6 - 将此添加到您的活动中
static {
if (!OpenCVLoader.initDebug()) {
// Handle initialization error
}
}
7 - 如果您在 Activity 中添加了以下代码,请注释掉 OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_8, this, mLoaderCallback); 您不再需要在恢复事件中加载 OpenCV。
@Override
public void onResume() {
super.onResume();
//OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_8, this, mLoaderCallback);
}
private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) {
@Override
public void onManagerConnected(int status) {
switch (status) {
case LoaderCallbackInterface.SUCCESS:
//OpenCV loaded successfully
break;
default:
super.onManagerConnected(status);
break;
}
}
};
通过使用此 lib AutoInstaller从我的应用程序安装打开的 Cv 获得了另一个解决方案