2014-02-05 7 views
8

Ich benutze OpenCV schon eine ganze Weile und frage mich, ob der Wechsel zu MATLAB eine gute Idee wäre. Soweit ich weiß, sind sie beide identisch mit MATLAB, das auf zugrundeliegenden OpenCV-Bibliotheken basiert. OpenCV ist Open Source, was ein klarer Vorteil ist und auf mehreren Plattformen unterstützt wird.MATLAB vs. OpenCV

Ich versuche Algorithmen speziell für Pupille-Erkennung, so brauche ich die Ergebnisse, um wirklich präzise zu sein.

Kennt jemand irgendwelche Vorteile durch Geschwindigkeit oder Verarbeitung oder integrierte Funktionen, die MATLAB verwendet?

+0

Bleiben Sie bei OpenCV und verwenden Sie seine Python-Bindungen für super schnelle Entwicklung. – Pithikos

Antwort

2

Sie haben nicht erwähnt, wie Sie OpenCV verwenden, also gehe ich davon aus, dass Sie C++ verwenden; falls Sie Python verwenden, bitte read this page ..

Wenn Sie use GPU for processing planen, dann würde ich vorschlagen, Sie halten Sie sich an C++ .. Natürlich gibt es loads von otheroptimizations Sie Ihren Code tun können ..

Für MATLAB gibt es einige fairly basic things, die auch getan werden kann ..

Am Ende des Tages, ich würde sagen, dass je näher man an Maschinensprache ist, desto besser ist Ihre Leistung sein wird, . Aber natürlich kann die Verwendung von C ein Schmerz sein, da es eine Chance gibt, unoptimierten Code und Speicherlecks zu schreiben. Aus diesem Grunde gibt C++ den besten Trade-off ..

HTH

+0

Derzeit mache ich es für Android, deshalb dachte ich, OpenCV wäre das Beste. Aber kann abhängig von den Ergebnissen wechseln. – nette

+0

Auch hier sagen Sie nicht, welche Sprache Sie verwenden. Wenn Sie mit Android arbeiten, würde ich davon ausgehen, dass das Schreiben auf Java ein guter Weg wäre, da Sie auf diese Weise besser in das SDK integriert werden können. Aber ich stehe zu dem, was ich gesagt habe; Für die Leistung benötigen Sie C++. – scap3y

+1

Gehen Sie nicht davon aus, dass C niedriger als C++ und daher schneller ist. Das klassische Beispiel ist das Sortieren einer Liste von Zahlen. C++ 'std :: sort 'schlägt C' qsort' typischerweise um den Faktor 6. Das liegt daran, dass die C++ - Sortierung eine Vorlage ist, ein High-Level-Konstrukt, das dem Optimierer den Zugriff auf die Vergleichsfunktion ermöglicht. – MSalters

2

Ihre Frage nicht wirklich Sinn machen.

OpenCV ist eine C++ - Bibliothek zur Durchführung von Computer Vision Aufgaben. Neben C++ werden auch andere Programmiersprachen über Bindings unterstützt.

MATLAB ist eine vollständige wissenschaftliche Suite, die aus einer massiven IDE mit einer eigenen Sprache besteht.

Wenn Sie möchten, dass Ihr Code in MATLAB ausgeführt wird, schreiben Sie MATLAB-Code. Aber dann müssen Sie auch eine 4GB IDE installieren und für eine ziemlich teure Lizenz zahlen.

Meine persönliche Wahl ist, OpenCV mit den Python-Sprachbindungen zu verwenden, da dies mir eine nette Scripting-Schnittstelle für Matrixoperationen gibt (wohl etwas überladener als MATLABs) und trotzdem leichten Zugriff auf OpenCV-Funktionen hat.

11

Wenn Sie OpenCV bereits kennen, dann bleiben Sie bei OpenCV. Derzeit ist OpenCV die umfassendste Open-Source-Bibliothek für Computer Vision und hat eine große Benutzergemeinschaft. OpenCV hat mehr Funktionen für Computer Vision als Matlab. Viele seiner Funktionen sind auf GPU implementiert. Die Bibliothek wird kontinuierlich aktualisiert (eine aktualisierte Version wird etwa alle 3 bis 4 Monate veröffentlicht). Im Allgemeinen läuft C++ OpenCV-Code schneller als Matlab-Code (wenn es nicht schnell genug ist, können Sie es schneller machen, indem Sie den Quellcode optimieren).

Matlab ist nützlich für Rapid Prototyping und Matlab-Code ist sehr einfach zu debuggen. Es hat eine gute Dokumentation und Unterstützung. Wie andere bereits erwähnt haben, ist Matlab nicht Open Source, seine Lizenz ist ziemlich teuer und seine Programme sind nicht portabel. Matlab ist eine interpretierte Sprache und wirkt sich negativ auf die Leistung aus. Leistung spielt eine große Rolle in der Computer-Vision, besonders wenn Sie Echtzeit-Video-Verarbeitung machen. Seine Programme können auch schnell gemacht werden, aber Sie werden sich auf Funktionen auf hoher Ebene verlassen müssen (d. H.eingebaute Funktionen professionell in C geschrieben), mex Funktionen (Ihre eigenen kompilierten C-Code), und Sie müssen lernen, wie Sie Ihren Code zu vektorisieren, um anständige Geschwindigkeit zu erreichen.

0

Wenn Sie opencv wirklich verstehen, denken Sie definitiv nicht daran, von opencv zu matlab zu wechseln.

Sie können Opencv mit Python oder Cpp und sogar Java usw. auch verwenden.
Eigentlich sollten Sie opencv nicht nur betrachten, um Ihre gesamte Aufgabe abzuschließen.
Wie opencv existieren auch andere Bibliotheken.
Zum Beispiel
numpy -> für schnelle numerische Berechnung
matplotlib -> Figur Fenster usw. zu zeigen, wie Matlab.
scipy -> für schnelle wissenschaftliche Berechnung.

Wenn Sie your_programming_language + opencv + matplotlib + numpy + scipy definitly werden Sie über opencv wundern. Und, mach dir keine Sorgen darüber, wie man diese Bibliotheken miteinander vermischen kann. Nennen Sie einfach ihren Namen und machen Sie Ihre eigentliche Kodierung. Das ist alles.

+0

Ich kenne OpenCV gerade nicht so sicher über MATLAB, daher die Frage. – nette

+0

Okay Nette. Kein Problem. Wenn Sie feststellen, dass meine Antwort in Ordnung ist, markieren Sie sie als korrekt. – Thamizh

+4

Der "your_programming_language + opencv + matplotlib + numpy + scipy" -Teil macht nicht viel Sinn. Numpy, Matplotlib und Scipy sind alle ** Python ** -Pakete. Warum (und wie) würden Sie sie mit anderen Sprachen kombinieren? –