我在我的 Android 应用程序中使用 OpenCV2.4.7 库。当应用程序启动时,它会转到名为 OpenCV Manager 的应用程序的 Google Play 商店。有没有办法将此应用程序集成到我的 Android apk 中,因为 我们已经在使用 OpenCV 库,所以为什么应用程序需要再次使用 OpenCV 引擎? 他们有什么方法可以集成这个引擎吗?
最佳答案
是的。要将 OpenCV 集成到您的应用程序中,并避免显式安装 OpenCV 管理器,您需要首先阅读 OpenCV 提供的以下文档。
初读 -> Static Initialization of OpenCV
成功执行步骤后,您需要在应用程序初始化代码中编写以下代码以启用 OpenCV,然后再调用 OpenCV API。例如,可以在 Activity 类的静态部分中完成:
static {
if (!OpenCVLoader.initDebug()) {
// Handle initialization error
}
}
引用资料:
- http://answers.opencv.org/question/2033/use-opencv-on-android-without-manager/
- Static Initialization on OpenCV Android
编辑
根据 Document 中的新场景,感谢 @rozhok 提供新信息,initDebug() 方法不能用于生产构建
Note This method is deprecated for production code. It is designed for experimental and local development purposes only. If you want to publish your app use approach with async initialization.
您需要使用以下方法
语法
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);
}
...
}
引用文献
关于android - 如何在 Android App 中集成 OpenCV Manager,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20259309/