我对学校的项目和它的一部分工作应该是关于有关计算机视觉库,为Android目前的情况。 我去把它与大的热情,因为计算机视觉看起来引人入胜的主题,但我一直在寻找更多然后一个星期,我没有找到太多。 我想能够提供有关库本身以及关于它们之间的比较信息。
我将分享我的发现至今。
OpenCV的
JavaCV
FastCv
Wikitude
正如你可以看到我有一个关于它的资料很少,做我自己的测试,为每一个库是远远超出了我目前的计算机视觉技术。
亲切的问候,彼得。
基本上有两种选择:OpenCV的和FastCV
OpenCV的是一种比FastCV了更多的功能更成熟的库。 对于许多计算机视觉任务,你可以找到只有在FastCV最基本的功能,而你可以在OpenCV中提供几乎所有流行的替代品。 检查实例的可用功能的探测器。 OpenCV的哈里斯,SURF,SIFT,FAST等FastCV,而另一方面,只有哈里斯和FAST。 的OpenCV包含用于不同HW包含桌上型计算机和移动计算设备的硬件的优化。 在桌面上使用OpenCV的能力为您提供了更灵活的开发选项,你可以调整和快速的桌面计算机上测试代码,你开始工作的移动开发之前。 此外OpenCV中被认为是部分一Khronos的计算机视觉集团的提案 。 所以,如果这得到批准的OpenCV可以成为计算机视觉的标准API。 据我所看到的,FastCV提供的Snapdragon CPU的卓越优化。 这可能在短期内决定了重要的作用,但我敢肯定的OpenCV会缩小差距非常快,如果有的话。
如果你选择了OpenCV的路径,那么有两种子路径:OpenCV的与Android NDK与JavaCV与Android SDK。 JavaCV是基于JavaCpp周围的OpenCV的包装。 JavaCV大多包裹C API,虽然OpenCV提供一个面向对象的C ++ API为好。 C ++的API处理自动释放未使用的存储器的,例如。 然而,C API(因此JavaCV)需要你处理手动未使用的图像的释放。 此外,当您在JavaCV面临的一个问题,是很难解决的问题,因为有太多的间接性检查。 问题是容易当你直接使用OpenCV的定位。 但是,在Android的情况下,NDK的额外的困难不应该被遗忘。
如果可用OpenCV的功能necesary针对特定的应用,且无需定制像素级处理代码,JavaCV是要走的路。 然而,如果需要的自定义图像处理代码相当数量,Java代码会减慢你的速度,你将需要切换到NDK,反正。 在后一种情况下,OpenCV的是选择的替代方案。
因为它是最好的计算机视觉库,现在我会用OpenCV的。 你会在C ++程序的功能,然后编译使用JNI库的Android aplication。 您对如何做到这一点的信息官方文档 。
我有这个配置工作,在Android的OpenCV的表现是非常好的。 如果您在定点运算的一些功能,你会发现好处。 祝好运
对于一个基于Android的项目,很容易下手JavaCV。 它包含几乎所有可用的OpenCV的功能。
但也有JavaCV没有丰富的文档,但OpenCV的。 所以,你可以看到来自OpenCV的文档的相关方法和使用那些JavaCV(同样的方法名称)。
有一个完整的文档在这里 。 这是关于如何设置JavaCV Eclipse的讨论 - Android的环境。
大臣回答相当不错,但我认为他的分析有错误的印象。 我想他是不知道OpenCV的为Android版本被称为OpenCV4Android。 它是Java包装为C ++的功能,这意味着你能避免使用的Android NDK和编写Java中的一切。 这将使除了事实,这其中,除了包装OpenCV的,也包装了很多其他不错的简历库JavaCV“非官方”库冗余。
编辑:
这不会改变对推荐的OpenCV大臣的结论,它实际上对选择它增加了更多的积分。
还有用于在Android上,CV一个新的选择谷歌手机视觉API 。 该API是通过暴露com.google.android.gms.vision
并让您检测给定的任意的图像的位图各种类型的对象(面,条形码,和面部特征)的。
先从OpenCV的,然后端口重要功能,如特征跟踪,卷积,扩张/侵蚀,也许SVM。 在使用#ifdef来编译针对Android包装这些电话的情况下__ANDROID__然后只需调用FastCV等同。 抽象是你的朋友。