2014-02-05 89 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 **包。爲什麼(以及如何)將它們與其他語言結合起來? –