web-dev-qa-db-fra.com

quelle est la différence entre OpenCV 2.4.11 et 3.0.0

La dernière version de OpenCV montre 2.4.11 février 2015 qui est plus récente que .0. qui est en version bêta. Quelle est la différence entre eux. Dois-je utiliser OpenCV 2.4.11 sur 3.0.0 car j'ai rencontré quelques bugs dans 3.0.0. Comment fonctionnent leurs versions?

28
pulp_fiction

3.0.0 devrait apporter beaucoup de nouvelles fonctionnalités, mais c'est actuellement la version bêta et non la version officielle (peut être instable). La dernière version officielle stable était le 2.4.11.

Utilisez le 3.0.0 s'il y a des fonctionnalités que vous ne récupérez pas dans 2.4.11 ou si vous êtes aventureux (3.0.0beta est génial et la version finale devrait arriver bientôt). Si vous souhaitez une sécurité sans besoins supplémentaires, utilisez 2.4.11.

12
Tom A

Bien qu'il existe de nouvelles fonctionnalités (comme la détection de texte, le détecteur KAZE) dans OpenCV 3.0, pour la plupart des développeurs, cette comparaison ne concerne pas les fonctionnalités. Il s'agit de vitesse . Sauf si vous êtes immédiatement en production, je vous suggère d'utiliser OpenCV 3.0. De plus, c'est loin d'être aventureux.

  1. La principale différence est l'API transparente dans OpenCV 3.0. Presque toutes les méthodes OpenCV 3.0 sont accélérées OpenCL. Ainsi, toutes les méthodes pourraient fonctionner sur GPU et cela pourrait conduire à une amélioration de 10 à 230%. La seule modification requise dans votre code consiste à utiliser UMat là où vous utilisiez Mat. Échantillons ( 1 ). Si vous aviez besoin de ces performances dans OpenCV 2.4. *, Vous deviez invoquer explicitement cv::ocl::* ou cv::gpu::* méthodes.
  2. S'il vous arrive d'être un développeur Java, c'est encore mieux. Java pour les classes/méthodes qui n'étaient pas disponibles auparavant, sont désormais fournis dans OpenCV 3.0 ( voir KalmanFilter largement utilisé)
  3. Il y a des changements comme la restructuration du module interne, qui d'un point de vue développeur, est mineur car cela pourrait être résolu en changeant les en-têtes OpenCV dans votre code.

À propos du cycle de publication, un rapide coup d'œil sur le repo OpenCV github ( 2 ) montre que les requêtes pull vont principalement dans la branche principale qui est pour OpenCV 3.0. Donc, je suppose, les principales corrections de bugs pourraient être rétroportées vers la branche 2.4. *.

Pour en savoir plus, sur les différences, lisez () et ( 4 ). À propos des bogues que vous avez rencontrés dans la version bêta 3.0, il pourrait être utile, si vous pouviez les augmenter avec un exemple d'exécution complet minimal sur la page des problèmes d'OpenCV ( 5 ).

42
Kiran

En plus des réponses fournies ci-dessus, une autre différence importante est que la détection des fonctionnalités SIFT/SURF a été supprimée du package openCV 3.0 par défaut. Depuis qu'ils sont brevetés, openCV a déplacé des algorithmes "non libres" vers un package différent:

opencv_contrib
8
seriousgeek