Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android计算机视觉JavaCV OpenCV FastCV比较_Android_Opencv_Computer Vision_Javacv_Google Vision - Fatal编程技术网

Android计算机视觉JavaCV OpenCV FastCV比较

Android计算机视觉JavaCV OpenCV FastCV比较,android,opencv,computer-vision,javacv,google-vision,Android,Opencv,Computer Vision,Javacv,Google Vision,我正在做一个学校项目,其中一部分应该是关于Android计算机视觉库的现状。我带着极大的热情去看它,因为计算机视觉似乎是一个迷人的主题,但我已经搜索了一个多星期,我没有找到太多。我希望能够提供有关图书馆本身以及它们之间比较的信息 我将分享我迄今为止的发现 OpenCV 似乎是最先进最受欢迎的 提供最多的功能 它有向后兼容性的问题 速度很快(至少我听说是这样,但我没有关于它的任何信息) 确实有关于它的大量书籍(至少对于C++版本) JavaCV 是包括opencv在内的少数其他库的包装器

我正在做一个学校项目,其中一部分应该是关于Android计算机视觉库的现状。我带着极大的热情去看它,因为计算机视觉似乎是一个迷人的主题,但我已经搜索了一个多星期,我没有找到太多。我希望能够提供有关图书馆本身以及它们之间比较的信息

我将分享我迄今为止的发现

OpenCV

  • 似乎是最先进最受欢迎的

  • 提供最多的功能

  • 它有向后兼容性的问题

  • 速度很快(至少我听说是这样,但我没有关于它的任何信息)

  • 确实有关于它的大量书籍(至少对于C++版本)
JavaCV

  • 是包括opencv在内的少数其他库的包装器
FastCv

  • 高通公司支持的新技术
Wikitude

  • 这更多是为了增强真实性,但其核心仍然是计算机 愿景
正如你所看到的,我有一些关于它的信息,为每个库做我自己的测试远远超出了我目前的计算机视觉技能


你好,彼得

对于基于android的项目,很容易从JavaCV开始。它包含OpenCV上几乎所有可用的函数

但是没有关于JavaCV的丰富文档,但是OpenCV有。因此,您可以从OpenCV文档中找到相关的方法,并使用JavaCV中的方法(相同的方法名称)


有一个完整的文件在。这是关于如何在eclipse-android环境下设置JavaCV的讨论。

我会使用OpenCV,因为它是目前最好的计算机视觉库。你将在C++中编程你的函数,然后使用JNI库编译Android应用程序。您有关于如何在计算机上执行此操作的信息


我使用过这种配置,OpenCV在android中的性能非常好。如果您使用定点算术生成一些函数,您将注意到它的好处。祝你好运基本上有两种选择:OpenCV和FastCV

OpenCV是一个比FastCV更成熟的库,具有更多的功能。对于许多计算机视觉任务,您只能在FastCV中找到最基本的功能,而在OpenCV中几乎可以找到所有流行的替代方案。例如,检查可用的特征检测器。OpenCV有Harris、SURF、SIFT、FAST等。另一方面,FastCV只有Harris和FAST。OpenCV包含针对不同硬件的硬件优化,包括台式计算机和移动计算设备。在桌面上使用OpenCV的功能为您提供了更灵活的开发选项,因为您可以在开始移动开发之前在快速桌面计算机上调整和测试代码。此外,OpenCV被视为的一部分。因此,如果这得到批准,OpenCV可以成为计算机视觉的标准API。就我所见,FastCV为Snapdragon CPU提供了卓越的优化。这可能在短期内对决策起到重要作用,但我相信OpenCV会很快缩小差距(如果有的话)

如果选择OpenCV路径,则有两个子路径:使用Android NDK的OpenCV与使用Android SDK的JavaCV。JavaCV是基于JavaCpp的OpenCV的包装器。JavaCV主要封装C API,尽管OpenCV也提供面向对象的C++ API。例如,C++ API自动处理未使用内存的释放。然而,C API(因此JavaCV)要求您手动处理未使用图像的释放。另外,当您在JavaCV中遇到问题时,很难解决这个问题,因为有太多的间接操作需要检查。直接使用OpenCV时,问题更容易定位。然而,在Android的情况下,不应该忘记NDK增加的困难


如果特定应用程序需要可用的OpenCV功能,并且不需要自定义像素级处理代码,那么JavaCV就是一种选择。然而,如果需要大量的自定义图像处理代码,Java代码将使您的速度减慢,并且您无论如何都需要切换到NDK。在后一种情况下,可以选择OpenCV

维齐尔回答得很好,但我觉得他的分析有误。我想他不知道Opencv有一个叫做OpenCV4Android的android版本。它是Java功能的C++包装,意思是你可以避免使用java NDK和java中的一切编程。这将使JavaCV“非官方”库变得多余,除了这个库,除了包装opencv之外,还包装了许多其他漂亮的CV库

编辑:


这并没有改变vizier关于推荐OpenCV的结论,它实际上为选择它增加了更多的要点。

Android上的CV有一个新选项,即。该API通过
com.google.android.gms.vision
公开,允许您在给定任意图像位图的情况下检测各种类型的对象(人脸、条形码和面部特征)。

从OpenCV开始,然后移植重要功能,如特征跟踪、卷积、扩张/侵蚀,以及可能的SVM。在为android编译的情况下,使用#ifdef uuu android_uu_u_u_u________________________。抽象是你的朋友。

以前有人做过类似的项目:@SamuelAudet你应该把它作为正式答案,这样我就可以重复了!:)@SamuelAudet现在看到链接中的信息似乎已经过时了。有没有关于fastcv与opencv相比有多快的数据?谢谢谢谢你的回答,但我不是在找图书馆,而是在找一般的比较。嗨@jav_Rock谢谢你的回答,但正如我上面所说的,我真的在找一些严肃的比较