50 votes

Différences entre AForge et OpenCV

Je suis en train d'apprendre la vision par ordinateur et C#. Il semble que deux bibliothèques de traitement d'image de premier plan soient OpenCV et AForge. Quelles sont quelques différences entre les deux?

Je suis en train de faire un éditeur d'images de base en C# et en faisant des recherches, j'ai trouvé des articles sur les deux. Mais je ne sais vraiment pas pourquoi je choisirais l'un plutôt que l'autre. J'aimerais éventuellement améliorer l'application pour inclure des fonctions plus avancées.

Merci.

43voto

Guido Points 249

Eh bien, pourquoi ne pas utiliser les deux ;) ??

Je suis en train d'utiliser ( littéralement en C# ... lol) EMGUCV.NET (qui est une enveloppe OpenCV C#) et AFORGE.NET en même temps :

AFORGE.NET plus son "Image Processing Lab" a beaucoup de sens pour les options de filtrage (détection de bords, seuils, et ainsi de suite) et pour faciliter les fonctionnalités de visualisation.

OpenCV fournit tout le reste comme SIFT/SURF et d'autres routines de traitement d'image plus sophistiquées.

C'est pourquoi vous utilisez .NET : simplement regroupez tous les composants dont vous avez besoin dans une seule application :)

19voto

Hannes Ovrén Points 5781

En ce moment, j'utilise OpenCV pour un projet à l'école, et j'ai consulté la documentation pour AForge et leurs fonctionnalités semblent différer. AForge propose de nombreux filtres et est probablement excellent pour différentes transformations et manipulations d'images. Mais il semble manquer beaucoup dans d'autres domaines. Je n'ai pas pu trouver d'opérations matricielles, ce qui a été décevant car c'est si utile en vision par ordinateur. Notre projet actuel (reconstruction d'un nuage de points 3D à partir d'une séquence d'images) semblerait, autant que je puisse le voir dans la documentation, impossible à réaliser uniquement avec AForge.

Combiner AForge avec une bonne bibliothèque d'algèbre linéaire pourrait toutefois être très utile.

Quant à OpenCV, il propose un ensemble de fonctionnalités riches, mais il est un peu difficile à programmer avec.

3voto

DMan Points 2437

Si vous souhaitez améliorer votre application avec des fonctions de plus en plus avancées comme vous l'avez dit, je choisirais OpenCV - cependant, une partie de votre succès dépend du fait que le port en C# est régulièrement mis à jour, ce qui ne devrait pas poser trop de problèmes compte tenu des trois ports. Je pense que EmguCV semble être l'un des meilleurs actuellement en termes de mises à jour, mais quand je l'ai examiné, il manquait de documentation (mais vous pourriez probablement traduire du code C++ en C# avec des connaissances en C++). AForge semble beaucoup plus facile pour moi et c'est ce que j'utilise actuellement. OpenCV prend également en charge les fichiers haarcascade.xml que vous pouvez utiliser pour la détection de visage.

Donc en fin de compte : les deux vous conviendront bien, OpenCV est plus largement utilisé/soutenu (bien que la plupart des utilisateurs soient en C++), AForge est plus facile. Tout dépend de ce que vous voulez faire.

1voto

Une autre chose importante à considérer est la licence, AForge est GPL, tandis qu'OpenCV est récemment passé à Apache2.0, ce qui signifie qu'utiliser AForge dans une application commerciale comme un point de vente par exemple, pourrait bien nécessiter d'ouvrir votre code source ou du moins certaines parties de celui-ci. Ce qui, autant que je le comprends, signifie qu'un client aura le droit de vous demander de lui envoyer une copie de votre code source ou certaines parties de celui-ci - ou le rendre publiquement disponible. Alors qu'Apache2.0, que OpenCV utilise désormais, vous permet de l'utiliser dans un environnement commercial sans avoir à ouvrir votre code source.

C'est pourquoi je m'éloigne d'AForge même s'il fonctionne bien, je ne suis pas prêt à risquer le temps que j'ai passé à développer mon application de point de vente. Si la licence est importante, je vous suggère de faire des recherches à ce sujet. Les deux ont leur licence disponible sur leurs sites web.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X