我在我的应用中使用OpenCV for Android使用静态初始化。初始化的代码是 -
static {
if(!OpenCVLoader.initDebug()) {
Log.d("My App", "Unable to load OpenCV");
} else {
Log.d("My App", "OpenCV loaded");
}
}
这很好用。但在OpenCV文档中,指定不推荐使用initDebug() -
注意对于生产代码,不推荐使用此方法。它是专为 仅用于实验和本地开发目的。如果你想 使用异步初始化发布您的应用使用方法。
现在,如果我使用异步初始化,它将使用应安装在设备上的OpenCV管理器应用程序。这不是我想要的。
我的问题是 - 如果不推荐使用initDebug()在发布模式下使用,是否还有其他方法可以加载不使用OpenCV Manager的openCV?或者使用initDebug()加载OpenCV是否安全?
答案 0 :(得分:2)
我的回答将来自我使用该库的经验!
{OpenCVLoader.initDebug()
遍历一些选项,最后使用System.loadLibrary("lib_name")
将库加载到内存中,并尝试向您介绍一些日志!
从OpenCVLoader.initDebug()
方法documentation
从当前应用程序包加载并初始化OpenCV库。 大致上,它类似于System.loadLibrary(“ opencv_java”)。
因此,最后,如果您要使用静态加载的库,这在大多数情况下会更方便,因为您不希望用户安装其他应用程序以使用您的应用程序,则应将该库加载到内存中使用System.loadLibrary("lib_name")
就能在Java代码中使用它们,直接加载还是使用initDebug
帮助程序方法并没有关系。
注意:库的新版本在库名称的末尾附加了该版本,因此您应使用System.loadLibrary("opencv_java3")
或jniLibs
文件夹中库名称的任何名称!
答案 1 :(得分:1)
不要担心initDebug(),它在发布模式下也是安全的。对于未来版本的OpenCV for Android应该是一个问题。如果您不更改版本,请不要担心。
答案 2 :(得分:1)
在尝试这个answer时,我引用了以下内容:
在后台打开OpenCV
OpenCVLoader.initDebug()
仅可用于调试目的,因为 当您在计算机上本地开发时。但是为了生产 您需要在Play商店上发布应用的目的,等等。 必须使用OpenCVLoader.initAsync()
。实际初始化 OpenCVLoader需要一些时间,具体取决于手机。因此,如果您加载 它使用initDebug()
,然后将在主线程中执行, 这可能会在一段时间内阻塞用户界面。所以建议加载 可以使用initAsync()
答案 3 :(得分:0)
保存使用静态初始化。我在项目中使用过它并进行了大量测试。