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 :

Déterminer si une frame est en noir et blanc


Sujet :

OpenCV

  1. #1
    Membre régulier
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2008
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2008
    Messages : 138
    Points : 70
    Points
    70
    Par défaut Déterminer si une frame est en noir et blanc
    Bonjour,

    Mon problème est de déterminer si une frame est en noir et blanc.
    La méthode que j'utilise actuellement est de convertir la frame dans le système YUV et de regarder les valeurs de U et de V.
    Si tous les pixels ont U et V compris entre 123 et 133 (ce qui revient à constuire leur histogramme), alors je considère que l'image est en noir et blanc. Mais c'est assez long.
    Connaîtriez-vous une méthode plus efficace ?

    Merci d'avance et bonne journée !

  2. #2
    Membre éprouvé
    Homme Profil pro
    Ingénieur 3D
    Inscrit en
    Avril 2008
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur 3D

    Informations forums :
    Inscription : Avril 2008
    Messages : 400
    Points : 968
    Points
    968
    Par défaut
    Tu peux juste regarder si R=G=B pour tous les pixels (avec peut être une petite marge, des fois que tu aurais une image JPEG avec des artéfacts qui sont pas les mêmes sur chaque couleur). Je suis pas sur que tu aies besoin de regarder tous les pixels, d'ailleurs, tu peux en prendre juste un sur quatre (a moins d'avoir un motif très particulier sur ton image, ça devrait pas poser de problème) et tu arrêtes directement après avoir trouvé le premier pixel coloré.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 20
    Points : 22
    Points
    22
    Par défaut
    Bonjour,

    Pourquoi ne pas regarder le nombre de canaux de votre image avec la fonction channels ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int Mat::channels() const
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    cv::Mat image;
     
    .
    . // lecture de l'image
    .
     
    if (image.channels() == 1) {
       // image en niveaux de gris
    }
    else if (image.channels() == 3 {
       // image RGB
    }

  4. #4
    Membre régulier
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2008
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2008
    Messages : 138
    Points : 70
    Points
    70
    Par défaut
    Bonjour,

    Merci mais je ne peux regarder le nombre de channel car la frame est issue d'une vidéo couleur. Ce sera une frame à trois canaux, mais coloriées en N&B.

    Je vais utiliser la méthode de math_lab, plus simple que celle que j'évoquais.

    Merci à vous deux !

  5. #5
    Membre régulier
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2008
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2008
    Messages : 138
    Points : 70
    Points
    70
    Par défaut
    Juste pour info au cas où d'autres seraient intéressés, mon problème initial était mal posé puisqu'il s'agissait de détecter des images en niveaux de gris, et non en N&B (abus de langage en terme audiovisuel). La solution reste néanmoins la même, si ce n'est qu'il faut vérifier que la différence entre les différentes valeurs de channels de chaque pixel est inférieur à un seuil donné.

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

Discussions similaires

  1. std::cout lorsque une frame est instanciée
    Par salucoco dans le forum wxWidgets
    Réponses: 4
    Dernier message: 22/05/2008, 00h40
  2. Savoir si une frame est affichée ?
    Par Ggamer dans le forum wxPython
    Réponses: 5
    Dernier message: 31/03/2008, 15h32
  3. Réponses: 2
    Dernier message: 17/03/2008, 18h20
  4. Déterminer si une image est en couleur
    Par ImagingAllthe dans le forum Images
    Réponses: 2
    Dernier message: 26/02/2008, 15h48
  5. [javascript]Savoir quand une frame est chargée
    Par LE NEINDRE dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 22/08/2005, 09h18

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