IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Membre habitué

    Inscrit en
    Février 2004
    Messages
    342
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 342
    Points : 197
    Points
    197
    Par défaut Quel est l'ordre de grandeur de la pénalité de performances en choisissant C#/emguCV au lieu de C++/OpenCV ?
    bonjour,

    je compte implémenter un programme d'analyse video s'appuyant sur opencv.

    Etant donné
    * mon expérience (désamour de C/C++, je ne le sors qu'en dernier recours)
    * le paysage de compétences/expérience autour de moi (il faut penser à la maintenance applicative que je ne ferai peut-etre pas moi-meme)
    ==> je comptais plutot implémenter ce projet en C# en m'appuyant soit sur emguCV (http://www.emgu.com/wiki/index.php/Main_Page) soit sur opencvsharp (http://code.google.com/p/opencvsharp/)

    pour le moment j'ai juste joué avec les samples de opencvsharp. L'api est pas terrible : certains trucs ont fait l'objet d'une API "jolie" orientée .net, d'autres trucs sont juste l'exposition des fonctions native opencv.
    emguCV semble plus abouti/complet, mais je n'ai pas encore regardé dans VS + il y a dans les 500 EUR de licence (ce qui n'est pas bien cher si le wrapper est bon au passage)

    Mes 1ers essais me font dire que le goulot d'étranglement sera vraisemblablement le CPU, cad le nombre de frames analysées par seconde par rapport au nombre de frames reçues. Ce qui me laisse penser que j'aurais le maximum en oubliant C#/wrappers et en y allant de suite pour C++/opencv

    ma question : quel est l'ordre de grandeur de la penalité de performance en choisissant C#/emguCV au lieu de C++/opencv ?

    je me doute que la question est trop vague pour etre correctement répondue (ca dépend de plein de facteurs), mais avant de me lancer dans un benchmark comparatif je voudrais avoir l'avis de la communauté, juste "l'odeur" de la réponse



  2. #2
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2012
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2012
    Messages : 43
    Points : 81
    Points
    81
    Par défaut
    Bonjour,
    Je ne connais pas Les librairies OpenCV pour C#.
    Dans tout les cas se sont uniquement des wrappers donc moins efficace que le code C++.
    Mais tu perdras uniquement en performance sur les appels de fonction.
    Hors OpenCV fournis des fonctions représentant le traitement d'algorithmes complet, donc un seul appel représente déjà un traitement lourd, donc je pense que la perte de performance sera presque négligeable dans la plupart des cas puisque tu devrais effectuer un nombre limité d'appel.
    Si tu comptes parcourir tes tableaux avec du cvGet2d et cvSet2d ou autre c'est une autre histoire mais ce serait mal même en C++.
    Donc je pense que tu peux utiliser un wrapper C# sans perte significative de performance mais je ne saurais pas t'en conseiller un.

  3. #3
    Membre habitué

    Inscrit en
    Février 2004
    Messages
    342
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 342
    Points : 197
    Points
    197
    Par défaut
    donc en gros, c'est plutot l'implémentation / intégration / utilisation des algo issus de opencv que viendraient les "bottlenecks" (pardon pour l'anglicisme)
    et pas vraiment dans le fait d'avoir choisi un wrapper plutot que du opencv/c++ directement ?

    interessant comme point de vue

    d'autres avis ?

  4. #4
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2012
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2012
    Messages : 43
    Points : 81
    Points
    81
    Par défaut
    Oui c'est l'idée que j'en ai, après je ne connais pas le fonctionnement du C#.
    Je suppose que les les algo C/C++ de OpenCV qui sont englobé dans le wrapper C# ne tourneront pas dans la sandbox et donc fonctionneront sans perte de performance, la perte de performance, qui existe malgré tout se situerait au niveau de la surcouche C# mais ne concernerait donc que les appels des fonctions.
    Donc la perte de performance se situerait sur des opérations dont le temps de traitement est négligeable par rapport à celui de l’algorithme qui sera appelé.

    Je ne peux absolument pas certifier ce que je dis, mais comme tu souhaitais l'avis de la communauté, voici le mien^^
    Mais prend le pour ce qu'il est, un avis et pas une vérité.

Discussions similaires

  1. [EDI] Quel est l'éditeur que vous recommandez pour PHP ?
    Par Lana.Bauer dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 400
    Dernier message: 10/04/2018, 20h08
  2. Quel est le meilleur script PHP de portail (CMS) ?
    Par Lana.Bauer dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 187
    Dernier message: 18/10/2012, 07h45
  3. Réponses: 87
    Dernier message: 06/07/2011, 15h33
  4. Quel est l'ordre de cet algorithme récurrent ?
    Par meditx dans le forum Mathématiques
    Réponses: 1
    Dernier message: 28/11/2010, 19h27
  5. Quel est le meilleur Routeur-adsl ???
    Par loki dans le forum Développement
    Réponses: 4
    Dernier message: 12/11/2002, 18h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo