2014-02-05 47 views
8

我一直在使用OpenCV很长一段时间,并想知道是否切换到MATLAB将是一个好主意。据我所知,它们都与基于OpenCV底层库的MATLAB相同。 OpenCV是开源的,这是一个明确的优势,并支持更多的平台。MATLAB与OpenCV

我想特定于瞳孔检测算法,所以我需要的结果是非常精确的。

有没有人知道MATLAB的速度或处理或内置功能的任何优势?

+0

坚持OpenCV并使用其Python绑定进行超快速开发。 – Pithikos

回答

2

你还没有提到你如何使用OpenCV,所以我打算假设你使用的是C++;如果你正在使用Python,请read this page ..

如果你打算use GPU for processing,那么我建议你坚持C++。当然,也有otheroptimizations你可以做你的代码loads ..

对于MATLAB,也有一些fairly basic things可以做,以及..

在一天结束的时候,我要说的是,您越接近机器级语言,更好的性能将是。但是,当然,使用C可能会很痛苦,因为存在编写未优化代码和内存泄漏的机会。出于这个原因,C++提供了最好的折衷..

HTH

+0

目前这样做的机器人这就是为什么我认为OpenCV会是最好的。但可能会根据结果切换。 – nette

+0

同样,你不是在说你正在使用哪种语言。如果您使用的是Android,我猜测使用Java编写应该是一个好方法,因为您将更好地将其集成到SDK中。但我支持我说的话;为了性能,你需要C++。 – scap3y

+1

不要认为C低于C++,因此_更快。经典的例子是对数字列表进行排序。 C++'std :: sort'通常比C'qsort'多6倍。这是因为C++排序是一个模板,一个允许优化器访问比较函数的高级构造。 – MSalters

2

你的问题并没有真正意义。

OpenCV是一个用于执行计算机视觉任务的C++库。除了C++之外,通过绑定还支持其他编程语言。

MATLAB是一个完整的科学套件,包含一个拥有自己语言的海量IDE。

如果你想让你的代码在MATLAB中运行,那么你编写MATLAB代码。但是,你还需要安装一个4GB的IDE,并支付相当昂贵的许可证。

我个人的选择是使用OpenCV和Python语言绑定,因为这给了我一个很好的脚本界面来完成矩阵操作(可以说比MATLAB更混乱),同时仍然可以轻松访问OpenCV函数。

11

如果你已经知道OpenCV,那么坚持使用OpenCV。目前,OpenCV是用于计算机视觉的最全面的开源库,它拥有庞大的用户群。 OpenCV比Matlab有更多的计算机视觉功能。它的许多功能都是在GPU上实现的。图书馆正在不断更新(大约每3到4个月发布一次更新版本)。一般而言,C++ OpenCV代码的运行速度比Matlab代码快(如果速度不够快,可以通过优化源代码使其速度更快)。

Matlab对于快速原型设计非常有用,而且Matlab代码非常易于调试。它有很好的文档和支持。但是,正如其他人所说的,Matlab不是开源的,它的许可证非常昂贵,而且它的程序不可移植。 Matlab是一种解释型语言,它会对其性能产生负面影响。性能在计算机视觉方面很重要,特别是如果您正在进行实时视频处理。它的程序也可以做得很快,但是你必须依赖高级功能(即内置函数专业用C语言编写),mex函数(您自己编译的C代码),您将不得不学习如何矢量化代码以实现可观的速度。

0

如果你真的了解opencv意味着definitly你永远不会考虑从opencv切换到matlab。

您也可以使用opencv与python或cpp甚至java等。
其实,你不应该只考虑opencv来完成你的整个任务。
像opencv一样,其他库也存在。
例如,
numpy的 - >快速数值计算
matplotlib - >以显示图形窗口等,如MATLAB。
scipy - >用于快速科学计算。

如果使用your_programming_language +的OpenCV + matplotlib + numpy的+ SciPy的 definitly你会想知道的OpenCV。 而且,不要担心如何将这些库混合在一起。只要提及他们的名字,并做你的实际编码。就这样。

+0

我意识到OpenCV对于MATLAB来说并不是那么肯定,因此是一个问题。 – nette

+0

好的内特。没问题。如果您发现我的答案没问题,请将其标记为正确。 – Thamizh

+4

“your_programming_language + opencv + matplotlib + numpy + scipy”部分没有多大意义。 Numpy,matplotlib和scipy都是** Python **包。为什么(以及如何)将它们与其他语言结合起来? –