JavaCV从运行时的角度看OpenCV

我正在构建一个包含图像处理技术的Android应用程序。 从运行时的角度来看,哪个是更好的JavaCV还是OpenCV?

它们的运行时开销似乎大致相同,但android-opencv包装器不能通过直接NIO缓冲区访问原始数据,从而使Java中的自定义处理效率低得多。 JavaCV对这些任务更有效。 作为JavaCV的作者,我也更喜欢它的API :)它比android-opencv更接近原始的C / C ++ API。

编辑:另一个区别是android-opencv强制用户使用NDK和JNI来编写函数。 由于JavaCV基于JavaCPP ,因此我们可以更轻松地编写本机函数,而无需同时处理NDK和JNI。

使用Android NDK编写本机代码通常比使用SDK快得多。 你可以在这里使用opencv和NDK找到很好的教程。 请注意,使用NDK框架,您可以访问openGL函数。

JavaCV只是本机OpenCV库的Java包装器。 OpenCV确实提供了Java / SWIG绑定。 我使用了两种绑定,并没有看到两者之间的显着差异。

如果您正在编写仅限本机的应用程序,请使用本机OpenCV。