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

C# Discussion :

Détecter feuille sur une image (AForge)


Sujet :

C#

  1. #1
    Membre du Club Avatar de coco1397
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2016
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2016
    Messages : 58
    Points : 67
    Points
    67
    Par défaut Détecter feuille sur une image (AForge)
    Bonjour,

    J'aimerais détecter une feuille sur une image que je capture avec une webcam.

    J'ai suivi ce tutoriel : http://aforgenet.com/articles/shape_checker/

    Le soucis que j'ai, c'est qu'il n'arrive pas à me détecter une feuille...

    Ici le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
     
     
    void Detection(Bitmap img_base)
            {
     
                BitmapData bitmapData = img_base.LockBits(new Rectangle(0, 0, img_base.Width, img_base.Height), ImageLockMode.ReadWrite,    img_base.PixelFormat);
     
                // Background noir
                ColorFiltering colorFilter = new ColorFiltering();
     
                colorFilter.Red = new IntRange(0, 64);
                colorFilter.Green = new IntRange(0, 64);
                colorFilter.Blue = new IntRange(0, 64);
                colorFilter.FillOutsideRange = false;
     
                colorFilter.ApplyInPlace(bitmapData);
     
                // Localiser la feuille 
                BlobCounter blobcounter = new BlobCounter();
     
                blobcounter.FilterBlobs = true;
                blobcounter.MinHeight = 5;
                blobcounter.MinWidth = 5;
     
                blobcounter.ProcessImage(bitmapData);
                Blob[] blobs = blobcounter.GetObjectsInformation();
                img_base.UnlockBits(bitmapData);
     
                // Dessins
                SimpleShapeChecker shapeChecker = new SimpleShapeChecker();
     
                Graphics graph = Graphics.FromImage(img_base);
                Pen red = new Pen(Color.Red, 5);
     
                for(int i=0; i < blobs.Length; i++)
                {
                    List<IntPoint> edgePoints = blobcounter.GetBlobsEdgePoints(blobs[i]);
                    List<IntPoint> corners;
     
                    if(shapeChecker.IsQuadrilateral(edgePoints, out corners))
                    {
                        if(shapeChecker.CheckPolygonSubType(corners) == PolygonSubType.Rectangle)
                        {
                            graph.DrawPolygon(red, ToPointsArray(corners));
                        }
                    }
                }
                red.Dispose();
                graph.Dispose();
                test_2.Source = Bitmap2BitmapImage(img_base);
            }
    Et le résultat:

    Nom : detec_feuille.PNG
Affichages : 211
Taille : 92,8 Ko

    Merci d'avance

  2. #2
    Membre du Club Avatar de coco1397
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2016
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2016
    Messages : 58
    Points : 67
    Points
    67
    Par défaut
    Voilà, mon soucis est à moitié résolu. Ma fonction fonctionne seulement si ma feuille est positionné sur une surface noir (comme sur la photo si dessous).

    Nom : detec_feuille_2.PNG
Affichages : 177
Taille : 37,4 Ko

  3. #3
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 195
    Points
    5 195
    Par défaut
    tu as donc un problème de contraste

    peut-être qu'il faut utiliser un filtre de contraste avant de faire le traitement + filtre Noir et blanc
    The Monz, Toulouse
    Expertise dans la logistique et le développement pour
    plateforme .Net (Windows, Windows CE, Android)

Discussions similaires

  1. [Débutant] détecter des points particuliers sur une image en couleur
    Par neophyte66 dans le forum Images
    Réponses: 1
    Dernier message: 04/10/2012, 15h44
  2. Détecter les cercles sur une image
    Par Asdorve dans le forum VB 6 et antérieur
    Réponses: 0
    Dernier message: 10/09/2010, 08h47
  3. Réponses: 6
    Dernier message: 15/11/2007, 12h31
  4. Zoom sur une image
    Par AurelBUD dans le forum C++Builder
    Réponses: 5
    Dernier message: 07/05/2004, 17h05
  5. Comment mettre un label sur une image
    Par dug dans le forum MFC
    Réponses: 3
    Dernier message: 07/04/2004, 10h40

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