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

Python Discussion :

Analyse d'une image


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2020
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2020
    Messages : 2
    Par défaut Analyse d'une image
    Bonjour à à tous,

    J'ai mon premier programme à réaliser en python pour mes études, le soucis c'est que je suis vraiment nul, très nul en programmation.

    Donc j'aurais aimé savoir s'il est possible d'avoir un coup de main ici.

    Je vous explique le sujet, déjà on passe par jupyter notebook que j'ai installer via anaconda il me semble. Le prof nous a transmis un jeu de carte via un dossier mais le souci premièrement c'est que dès que je change la valeur de la carte (D'un 10 de trèfle je veux afficher un 10 de coeur) et ben ça ne fonctionne pas. Surement un soucis de réglages mais je ne comprends pas quoi.

    Du coup, le sujet c'est qu'à partir d'une analyse de l'image, on doit savoir reconnaître qu'elle carte est affiché à l'écran. Le jeu de carte que l'on doit étudier est un jeu de carte basique sauf que l'on prend que les cartes de 1 à 10, on exclu les figures.

    A partir de là, il faut être capable d'identifier:

    La couleur: noire ou rouge
    La forme: coeur, carreau, trèfle ou pique
    Le numéro: donc de 1 à à10.



    Donc selon moi il faudrait réaliser une analyse de l'image pixel par pixel avec la bibliothèque matpotlib de ce que j'ai pu trouvé sur internet.

    Mon "algorithme" commencerait par quelque chose comme ça (je me répète, mais le développement j'y arrive absolument pas):

    Pour "pixel" allant de 1 à "nombre de pixel total" faire:
    n° pixel <- Valeur rgb (ce qui nous donnerait la liste de tous les pixels avec la couleur, donc la
    couleur serait déjà trouvé)

    Ensuite je pense qu'il faudrait comparer le nombre de pixels blanc par rapport au nombre de pixels noir ou rouge. Car plus il y a de la couleur sur la carte, plus le chiffre sur la carte est élevé. Mais là je n'ai aucunes approche de comment je pourrait faire. Avec cette partie on pourrait en déduire le chiffre.

    Et pour la forme il faudrait, selon moi, analyser un pixel spécifique je m'explique. Sur chaque carte il y a le symbole qui est placé au même endroit sur la carte (dans les 4 coins). Donc grossièrement si on analyse une carte rouge, les pixels du coeur seront différents des pixels du carreau.

    Selon vous est ce une première bonne approche ?

    Je ne souhaite pas quelqu'un qui fasse le programme pour moi évidemment, mais de l'aide et une piste sur laquelle je peux m'appuyer.

    J'espère avoir été clair, et je vous remercie d'avoir pris le temps de lire et de m'aider si c'est possible.

    Bonne journée à vous

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 743
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 743
    Par défaut
    Salut,

    Soit vous faites de la reconnaissance de forme avec, par exemple, OpenCV et dans votre cours ont été introduit des algos. qui vont bien à mettre en application (comme on n'a pas assisté au cours pas la peine de demander de l'aide: on est incapable de savoir quoi utiliser et s'interdire d'utiliser...).


    Soit vous êtes "pragmatique" i.e. vous savez que vos cartes sont rectangulaires, ont une certaine dimension et sont symétriques par rapport à la première médiatrice.

    Donc vous avez un ensemble de 5 ou 6 emplacements bien définis où la couleur sera "blanche" ou "noire" ou "rouge" qui devrait permettre de calculer le nombre de points.

    Pour la différence entre cœur et carreau (ou trèfle et pique), superposez les deux figures, vous avez des zones où il y a du blanc dans un cas et de la couleur dans l'autre.

    A partir de là, c'est la définition d'un tas de coordonnées à examiner et des boucles et des conditions.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre éprouvé
    Homme Profil pro
    Vagabong étudiant en annalyse du signal.
    Inscrit en
    Avril 2019
    Messages
    130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Vagabong étudiant en annalyse du signal.
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2019
    Messages : 130
    Par défaut
    Bonjour,

    1)
    Si vous savez pas trop à quoi ressemble vos images vous pouvez effectivement faire un histogramme, c'est ce que vous dites avec
    Pour "pixel" allant de 1 à "nombre de pixel total"
    En python, cette citation peut se traduire de la façon suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    import cv2 # c'est le module opencv-python don parle 'wiztricks'
     
    image = cv2.imread("image.jpg") # ca retourne une matrice de vecteur a 3 coordonnées: rouge, vert et bleu
    for pxl_rouge in image[:,:,0].ravel(): # remplacer 0 par 1 pour le vert et 2 pour le rouge, pour mieux comprendre, regarder array numpy
        ...
    2)
    plus il y a de la couleur sur la carte, plus le chiffre sur la carte est élevé
    Pourquoi pas! vous pouvez regarder la couleur moyenne? Plus il y a de noir sur l'image plus la valeur moyenne des pixels sera petite.
    Et peut-être qu'il peut être intéressant de passer d'une image couleur a une image en noir et blanc?

    3)
    pour la forme il faudrait, selon moi, analyser un pixel spécifique
    Si votre algorithme doit être capable de différencier qu'un jeu d'image, ça peu peut etre fonctionner si vous arrivez a trouver un pxl commun a tous les cœurs mais pas les carreaux ...
    Je n'ai pas non plus suivis votre cours mais peut-être avez vous vu des méthodes un peu plus efficace pour ce dernier point?

    4)
    Il me semble que vous ne manquez pas d'idées, envoyez nous votre code ou vos bout de code, en python ou en pseudo code.

  4. #4
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 228
    Par défaut
    hello,
    Citation Envoyé par Terence15 Voir le message
    le sujet c'est qu'à partir d'une analyse de l'image, on doit savoir reconnaître qu'elle carte est affiché à l'écran. Le jeu de carte que l'on doit étudier est un jeu de carte basique sauf que l'on prend que les cartes de 1 à 10, on exclu les figures.
    est-ce que tu as le droit d'utiliser n'importe quel module ou bibliothèque pour écrire le code ou est-ce qu'il y a des choses imposées ?
    Est-ce que la partie suivante est obligatoire ?
    Citation Envoyé par Terence15 Voir le message
    A partir de là, il faut être capable d'identifier:
    La couleur: noire ou rouge
    La forme: coeur, carreau, trèfle ou pique
    Le numéro: donc de 1 à à10.
    Si la partie ci-dessus n'est pas obligatoire et si les images affichées correspondent aux images originales des cartes , on peut utiliser un système de signature d'images (une signature est une matrice qui caractérise une image). On crée un dictionnaire de type carte, signature de carte pour toutes les cartes et quand on lit la carte affichée on calcule sa signature et on a la compare aux signatures de toutes les cartes. Quand il y a égalité on a trouvé la carte.
    Voici ce que j'obtiens par exemple avec un module qui calcule les signatures d'images et qui en plus possède une fonction qui calcule l'écart de correspondance entre 2 images.
    Ci-dessous une partie du balayage du dictionnaire de signatures. L'image affichée est le 6 de pique ( 6-spades) :
    5-clubs.png -> écart : 0.4168300956791596
    5-diamonds.png -> écart : 0.4799339696299893
    5-hearts.png -> écart : 0.5553081456218173
    5-spades.png -> écart : 0.3824504038875189
    6-clubs.png -> écart : 0.22206392781830236
    6-diamonds.png -> écart : 0.2999555027912169
    6-hearts.png -> écart : 0.42789113620392444
    6-spades.png -> écart : 0.0
    7-clubs.png -> écart : 0.36762835659305193
    7-diamonds.png -> écart : 0.41084615679884456
    7-hearts.png -> écart : 0.4789374230794342
    7-spades.png -> écart : 0.3280027509999079
    8-clubs.png -> écart : 0.4277415391689479
    8-diamonds.png -> écart : 0.45588933629139994
    8-hearts.png -> écart : 0.52187597929168
    8-spades.png -> écart : 0.3832324900277523
    Ami calmant, J.P

  5. #5
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 835
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par Terence15 Voir le message
    Ensuite je pense qu'il faudrait comparer le nombre de pixels blanc par rapport au nombre de pixels noir ou rouge. Car plus il y a de la couleur sur la carte, plus le chiffre sur la carte est élevé. Mais là je n'ai aucunes approche de comment je pourrait faire. Avec cette partie on pourrait en déduire le chiffre.
    Pas besoin de chercher la couleur pour avoir la valeur. Suffit de compter simplement le nb de pixels blancs par rapport à la surface totale. Sur une carte de (par exemple) 50x200, il y a 10000 pixels présumés blancs. Si on n'en trouve que 9500 alors c'est probablement un as. Avec 8800 ce sera un deux. Avec 7600 ce sera un trois et etc...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

Discussions similaires

  1. Analyse d'une image
    Par thierrybatlle dans le forum Traitement d'images
    Réponses: 1
    Dernier message: 11/07/2012, 14h57
  2. analyse spectrale d'une image
    Par tweety22 dans le forum Traitement d'images
    Réponses: 2
    Dernier message: 20/04/2009, 11h03
  3. [Turbo Pascal] Peut-on utiliser GetPixel pour analyser une image sans l'afficher ?
    Par _Hope_ dans le forum Turbo Pascal
    Réponses: 1
    Dernier message: 01/01/2009, 22h07
  4. analyse d'une image
    Par floopi51 dans le forum Traitement d'images
    Réponses: 34
    Dernier message: 09/12/2008, 11h44
  5. Analyse d'une image
    Par Piki dans le forum Langage
    Réponses: 3
    Dernier message: 23/04/2007, 08h21

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