Android的计算机视觉JavaCv OpenCV的Fastv比较 [英] Android Computer Vision JavaCv OpenCV Fastv comparison

查看:752
本文介绍了Android的计算机视觉JavaCv OpenCV的Fastv比较的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我工作的学校项目的一部分应为有关计算机视觉库,针对Android目前的情况。我去把它与大的热情,因为计算机视觉看起来引人入胜的主题,但我一直在寻找更多然后一个星期,我没有找到太多。我希望能够提供有关库本身以及关于它们之间的比较信息。

I am working on school project and part of it should be about current situation about computer vision libraries for Android. I went to it with large enthusiasm because computer vision seems like fascinating subject but I have been searching for more then a week and I did not find much. I would like to be able to provide information about libraries themselves and about comparison between them.

我会分享我发现至今。

I will share what I found so far.

OpenCV的

  • 似乎是最先进的和最流行的。

  • seems like the most advanced one and the most popular.

提供的功能的最大数量

它有问题的向后兼容性

快(至少我是这样听说过,但我有一些关于它的零信息)

is fast(at least so I heard but I have zero information about it)

JavaCV

  • 是包装,一些其他库,包括OpenCV的

FastCv

  • 在新的高通它的后面。

Wikitude

  • 这是多为augmentedreality但其核心仍然是计算机 视力。
  • this is more for augmentedreality but in its core is still computer vision.

正如你可以看到我有一个关于它的资料很少,做我自己的测试,每一个库是远远超出了我目前的计算机视觉技术。

As you can see I have a little information about it and doing my own tests for every library is far beyond my current computer vision skills.

亲切的问候,彼得。

推荐答案

基本上有两种选择:OpenCV的和FastCV

Basically there are two options: OpenCV and FastCV

OpenCV的是一种更成熟的库比FastCV了更多的功能。对于许多计算机视觉任务,你可以找到只有在FastCV最基本的功能,而你可以有几乎所有的OpenCV提供流行的替代品。检查可用的功能检测器实例。 OpenCV的哈里斯,冲浪,过筛,FAST等FastCV,而另一方面,只有哈里斯和快速。 OpenCV的包含硬件优化用于不同硬件包括台式计算​​机和移动计算设备。使用OpenCV的桌面的能力为您提供了更灵活的开发选项,你可以调整你开始工作的移动开发之前,一个快速的桌面计算机上测试code。还OpenCV的被认为是<一部分href="http://www.khronos.org/assets/uploads/developers/library/Computer-Vision-Working-Group-Proposal-Dec11.pdf">a Khronos的计算机视觉集团的提案。所以,如果这得到批准的OpenCV可以成为计算机视觉的标准API。据我所看到的,FastCV提供了卓越的优化了的Snapdragon处理器。这可能在短期内决定着重要作用,但我敢肯定的OpenCV将缩小差距非常快,如果有的话。

OpenCV is a more mature library with a lot more functionality than FastCV. For many computer vision tasks you can find only the most basic functionality in FastCV, whereas you can have almost all popular alternatives available in OpenCV. Check the available feature detectors for instance. OpenCV has Harris, SURF, SIFT, FAST, etc. FastCV, on the other hand, has only Harris and FAST. OpenCV contains hardware optimizations for different HW including desktop computers and mobile computing devices. The ability to use OpenCV in desktop provides you a more flexible development option, as you can tweak and test the code on a fast desktop computer before you start working the mobile development. Also OpenCV is considered as part of a Khronos Computer Vision Group Proposal. So, if this gets approved OpenCV can become the standard API for computer vision. As far as I can see, FastCV provides superior optimizations for Snapdragon CPUs. This might play an important role in the decision in the short term, but I'm sure OpenCV will close the gap very fast, if any.

如果您选择OpenCV的路径,那么有两种子路径:OpenCV的与Android NDK与JavaCV与Android SDK。 JavaCV是围绕OpenCV的包装基于JavaCpp。 JavaCV大多是包装C API,虽然OpenCV提供一个面向对象的C ++ API,以及。 C ++的API处理自动释放未使用的内存,例如。然而,C API(因此JavaCV)需要你来处理释放未使用的意象手动。此外,当你在JavaCV面临的一个问题,这是很难解决的问题,因为有太多的间接检查。问题比较容易,当你直接使用OpenCV的定位。然而,在案件的Andr​​oid,NDK的额外的困难不应该被遗忘。

If you choose the OpenCV path, then there are two sub-paths: OpenCV with Android NDK vs. JavaCV with Android SDK. JavaCV is a wrapper around OpenCV based on JavaCpp. JavaCV mostly wraps C API, although OpenCV provides an Object Oriented C++ API as well. The C++ API handles releasing of unused memory automatically, for instance. However, C API (hence JavaCV) requires you to handle releasing of unused imagery manually. Also when you face a problem in JavaCV, it is difficult to tackle the problem, because there are too many indirections to check. Problems are easier to locate when you use OpenCV directly. However, in case of Android, the added difficulty of NDK should not be forgotten.

如果使用OpenCV的功能necesary的具体应用,并没有自定义像素级处理code是必要的,JavaCV是要走的路。但是,如果需要进行大量的自定义图像处理code,Java的code会减慢你的速度,你就需要切换到NDK,反正。在后一种情况下,OpenCV的是替代选择。

If available OpenCV functionality is necesary for the specific application, and no custom pixel level processing code is needed, JavaCV is the way to go. However, if a considerable amount of custom image processing code is required, Java code will slow you down, and you will need to switch to NDK, anyway. In the latter case, OpenCV is the alternative to choose.

这篇关于Android的计算机视觉JavaCv OpenCV的Fastv比较的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆