2015-04-11 5 views

Antwort

12

3.0.0 sollte eine Menge neuer Funktionen bringen, aber es ist derzeit Beta und nicht die offizielle Version (kann instabil sein). Letzte offizielle stabile Veröffentlichung war 2.4.11.

Verwenden Sie die 3.0.0, wenn es Funktionen gibt, die Sie nicht in 2.4.11 abrufen oder wenn Sie abenteuerlustig sind (3.0.0beta ist großartig und die endgültige Version sollte bald kommen). Wenn Sie Sicherheit ohne zusätzliche Anforderungen wünschen, verwenden Sie 2.4.11.

+1

Können Sie ein paar Features in 3.0.0 vorhanden zusätzlich Liste? Und warum verwenden sie die Version 3.0.0 statt 2.4.12 Beta? –

+6

3.0.0 ist nicht vollständig abwärtskompatibel mit 2.4.x. Darüber hinaus wurden viele der Klassen komplett neu geschrieben, sowie ein Schwerpunkt auf GPU-beschleunigte Funktionen. Es wurde eine Reihe neuer Module hinzugefügt, Sie können eine Liste der Änderungen [hier] (http://code.opencv.org/projects/opencv/wiki/ChangeLog) sehen. –

+0

Sie haben sich auch der Herausforderung gestellt, sehr disruptive Technologien zu integrieren: http: //code.opencv.org/projekte/opencv/wiki/VisionChallenge –

41

Obwohl es in OpenCV 3.0 neue Features (wie Texterkennung, KAZE-Detektor) gibt, geht es für die meisten Entwickler nicht um Features. Es handelt sich um Geschwindigkeit. Sofern Sie nicht sofort in Produktion gehen, schlage ich vor, dass Sie OpenCV 3.0 verwenden. Auch das ist alles andere als abenteuerlich.

  1. Der Hauptunterschied ist transparente API in OpenCV 3.0. Fast alle OpenCV 3.0-Methoden sind OpenCL-beschleunigt. So könnten alle Methoden auf GPU laufen und dies könnte zu einer Verbesserung von 10 auf 230% führen. Die einzige Änderung in Ihrem Code ist die Verwendung UMat, wo Sie Mat verwendet haben. Proben (1). Wenn Sie diese Leistung in OpenCV 2.4. * Benötigen, müssen Sie explizit die Methoden cv::ocl::* oder cv::gpu::* aufrufen.
  2. Wenn Sie ein Java-Entwickler sind, ist es noch besser. Java-Wrapper für Klassen/Methoden, die früher nicht verfügbar waren, sind jetzt in OpenCV 3.0 zur Verfügung gestellt (siehe weit verbreitet KalmanFilter)
  3. Es gibt Änderungen wie interne Modulstruktur, die von Entwickler Sicht, ist gering, da das könnte gelöst werden von ändern OpenCV-Header in Ihrem Code.

Über den Release-Zyklus, ein kurzer Blick in OpenCV GitHub Repo (2) zeigt, ziehen Anfrage sind meist in master-Zweig gehen, die für OpenCV 3.0 ist. Also ich nehme an,, große Bug-Fixes könnten zu 2,4 * rückportiert werden.

Für mehr, auf Unterschiede lesen (3) und (4). Über die Fehler, die Sie in der Beta-Version 3.0 gefunden haben, könnte es hilfreich sein, wenn Sie sie mit einem minimalen kompletten laufenden Beispiel auf der OpenCV-Problemseite (5) auslösen könnten.

+0

Wissen Sie, ob die Java-Bindings für OpenCV 3.x OpenCL/CUDA unterstützen? – Robula

+0

Java-Bindungen sind nur JNI-Wrapper. Also sollten sie unterstützen. – Kiran

7

Zusätzlich zu den oben angegebenen Antworten ist ein weiterer wichtiger Unterschied, dass die SIFT/SURF-Featureerkennung vom standardmäßigen openCV 3.0-Paket entfernt wurde. Da sie patentiert werden, OpenCV hat ‚unfreie‘ Algorithmen zu einem anderen Paket bewegt:

opencv_contrib