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

OpenCV Discussion :

Double seuillage avec "cvInRangeS"


Sujet :

OpenCV

  1. #1
    Membre régulier Avatar de Décembre
    Inscrit en
    Avril 2010
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 277
    Points : 110
    Points
    110
    Par défaut Double seuillage avec "cvInRangeS"
    Bonjour,

    Dans le but de faire un double seuillage à une image, voici ce que j'ai fait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    cvInRangeS(img1_gray, 120,125, img1_bwc);
    J'ai obtenu les erreurs suivantes:
    error C2664: 'cvInRangeS'*: impossible de convertir le paramètre 2 de 'int' en 'CvScalar'
    il n'existe aucun constructeur approprié pour la conversion de "int" en "CvScalar"
    Avez-vous une idée du problème

    Merci d'avance

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Un parcours de la documentation avant de bêtement l'utiliser peut-être ?
    La signature de la fonction est la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void cvInRangeS(const CvArr* src, CvScalar lower, CvScalar upper, CvArr* dst)
    Prenant deux CvScalar en 2e et 3e arguments et non des int, ce que te rappelle le message d'erreur.

  3. #3
    Membre régulier Avatar de Décembre
    Inscrit en
    Avril 2010
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 277
    Points : 110
    Points
    110
    Par défaut
    Bonjour,

    Ce que je souhaiterais faire c'est garder dans l'image que les pixels dont les valeurs sont comprises entre les deux niveaux de gris suivants: 120 et 125. Or le grand problème que je rencontre et que cvscalar nécessite l'introduction de 3 valeurs: val1, val2, val3

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    cvInRange(image, cvScalar(val1, val2, val3), cvScalar(val1, val2, val3), processedImage);
    J'ai rien compris

  4. #4
    Invité
    Invité(e)
    Par défaut
    Comme indiqué dans la documentation que j'ai donné en lien, pour des images en niveaux de gris (single-channel input array), seule la première valeur est prise en considération.
    Tu peux utiliser la fonction cvRealScalar() par commodité.

  5. #5
    Membre régulier Avatar de Décembre
    Inscrit en
    Avril 2010
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 277
    Points : 110
    Points
    110
    Par défaut
    J'ai trouvé mon bonheur avec cvRealScalar()

    Mille mercis

+ Répondre à la discussion
Cette discussion est résolue.

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