web-dev-qa-db-fra.com

Différences entre AForge et OpenCV

J'apprends juste la vision par ordinateur et le C #. Il semble que deux bibliothèques de traitement d'images importantes sont OpenCV et AForge . Quelles sont les différences entre les deux?

Je fais un éditeur d'image de base en C # et lors de mes recherches, je suis tombé sur des articles sur les deux. Mais je ne sais pas vraiment 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.

50
vrish88

J'utilise OpenCV pour un projet à l'école en ce moment, et j'ai parcouru la documentation d'AForge et leurs fonctionnalités semblent différer. AForge a beaucoup de filtres et est probablement excellent pour différentes transformations et manipulations d'images. Mais cela semble manquer un peu dans d'autres domaines. Je n'ai pu trouver aucune opération matricielle, ce qui était décevant car il est si utile en vision par ordinateur. Notre projet actuel (reconstruction de nuages ​​de points 3D à partir d'une séquence d'images) serait, pour autant que je puisse voir à partir des documents, impossible à faire avec AForge seul.

Combinez AForge avec une bonne bibliothèque d'algèbre linéaire et vous pourriez avoir quelque chose de vraiment utile.

Quant à OpenCV, il a un ensemble de fonctionnalités riche mais est un peu difficile à programmer.

19
Hannes Ovrén

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

J'utilise (littéralement en C # ... lol) EMGUCV.NET (qui est un wrapper OpenCV C #) et AFORGE.NET en même temps:

AFORGE.NET ainsi que son "Image Processing Lab" ont beaucoup de sens pour les options de filtrage (détection des bords, seuils, etc.) 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: réunissez simplement tous les composants dont vous avez besoin dans une seule application :)

43
Guido

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

Donc, pour la version finale: les deux vous conviendront bien, OpenCV est plus largement utilisé/pris en charge (bien que la plupart des utilisateurs soient en C++), AForge est plus facile. Tout se résume à ce que vous voulez faire.

3
Dominic K