如何在Android应用程序中集成OpenCVpipe理器
我在我的Android应用程序中使用OpenCV2.4.7库 。 当应用程序启动时,它将转到Google Play商店进行称为OpenCVpipe理器的应用程序。 他们的任何方式来集成这个应用程序在我的Android apk,因为我们已经使用OpenCV库,所以为什么应用程序需要再次OpenCV引擎? 是他们的任何方式来整合这个引擎。
是。 要将OpenCV集成到您的应用程序中,并避免显式安装OpenCVpipe理器,您需要先阅读以下由OpenCV提供的文档。
首先阅读 – > 静态初始化OpenCV
成功执行后,您需要编写以下代码,在调用OpenCV API之前在您的应用程序初始化代码中启用OpenCV。 例如,可以在Activity类的静态部分完成:
static { if (!OpenCVLoader.initDebug()) { // Handle initialization error } }
参考文献:
- http://answers.opencv.org/question/2033/use-opencv-on-android-without-manager/
- 静态初始化OpenCV Android
编辑
根据Document中的新场景,并感谢@rozhok提供的新信息, initDebug()方法不能用于生产构build
注意对于生产代码,此方法已被弃用。 它仅用于实验和本地开发目的。 如果你想发布你的应用程序使用方法与asynchronous初始化。
你需要使用下面的方法
句法
static boolean initAsync(String Version, Context AppContext, LoaderCallbackInterface Callback)
例
public class Sample1Java extends Activity implements CvCameraViewListener { private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) { @Override public void onManagerConnected(int status) { switch (status) { case LoaderCallbackInterface.SUCCESS: { Log.i(TAG, "OpenCV loaded successfully"); mOpenCvCameraView.enableView(); } break; default: { super.onManagerConnected(status); } break; } } }; @Override public void onResume() { super.onResume(); OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_6, this, mLoaderCallback); } ... }
参考
(1在opencv.mk文件中包含$(CLEAR_VARS)之后插入这些行
OPENCV_CAMERA_MODULES:=on OPENCV_INSTALL_MODULES:=on include D:/opencv_with/OpenCV-2.4.10-android-sdk/sdk/native/jni/OpenCV.mk
(2)在你当前的项目目录下libs文件夹复制opencv库里面的所有文件夹。
(3添加您的活动
if (!OpenCVLoader.initDebug()) { Log.d("ERROR", "Unable to load OpenCV"); } else { mLoaderCallback.onManagerConnected(LoaderCallbackInterface.SUCCESS); } private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) { @Override public void onManagerConnected(int status) { switch (status) { case LoaderCallbackInterface.SUCCESS: { //Your opencv Operation code } } } };
这是文档中关于OpenCVpipe理器安装的说明:
apk文件夹包含应安装在目标Android设备上的Android软件包,以便通过OpenCVpipe理器API访问OpenCV库(请参阅下面的详细信息)。
在可以访问Google Play Market(和Internet)的制作设备上,这些软件包将在首次使用OpenCVpipe理器API启动时从市场安装。
…
注意:因为OpenCV团队可能会在市场上发布这个软件包的更新版本,所以从Internet安装是更好的方法。
你可以在这里阅读更多关于它的信息: https : //docs.opencv.org/3.0-beta/doc/tutorials/introduction/android_binary_package/O4A_SDK.html#general-info
只需评论下面的代码行
@Override public void onResume() { super.onResume(); //OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_3, this, mLoaderCallback); }