Analyse d'une image
Fermé
Terence
-
14 oct. 2020 à 13:50
Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 - 17 déc. 2020 à 12:02
Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 - 17 déc. 2020 à 12:02
A voir également:
- Analyse d'une image
- Image iso - Guide
- Analyse disque dur - Télécharger - Informations & Diagnostic
- Comment agrandir une image - Guide
- Acronis true image - Télécharger - Sauvegarde
- Analyse composant pc - Guide
49 réponses
Phil_1857
Messages postés
1872
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
28 février 2024
168
11 nov. 2020 à 10:48
11 nov. 2020 à 10:48
Bonjour T-Rence,
"Mais ça me semble assez complexe à réaliser non ?"
Bah non, tu crée un programme à part, rien que pour compter les pixels, c'est la phase d'acquisition des données, comme quand tu a créé tes quatre listes pixels_trefle, etc ...
Dans ce programme:
Ensuite, vérifier si il y a une proportionnalité entre les angles et le delta nombre des pixels - nombres de pixels carte non tournée
C'est juste pour vérifier l'hypothèse, si c'est bon, on verra pour la suite
"Mais ça me semble assez complexe à réaliser non ?"
Bah non, tu crée un programme à part, rien que pour compter les pixels, c'est la phase d'acquisition des données, comme quand tu a créé tes quatre listes pixels_trefle, etc ...
Dans ce programme:
Afficher une carte boucle avec variable a qui varie de 0 à 90 tourner carte de l'angle a compter les pixels noirs ou rouges afficher : a nombre de pixels
Ensuite, vérifier si il y a une proportionnalité entre les angles et le delta nombre des pixels - nombres de pixels carte non tournée
C'est juste pour vérifier l'hypothèse, si c'est bon, on verra pour la suite
T-Rence
Messages postés
57
Date d'inscription
samedi 27 juillet 2019
Statut
Membre
Dernière intervention
16 décembre 2020
12 nov. 2020 à 11:01
12 nov. 2020 à 11:01
Bonjour Phil,
J'ai essayé de faire le programme que tu m'as dit. Mais j'ai une erreur quand je veux afficher les pixels.
Donc ça j'ai pas touché, c'est ce qui permet d'afficher une carte basique.
Ensuite j'ai essayé de faire ta boucle:
J'ai une erreur sur l'affichage qui me dit: "TypeError: 'method' object is not subscriptable"
Si je fais un print(a), là j'ai pleins de 0 à la suite donc logiquement 90 si je ne me trompe pas .
Et si je fais un print(pixel) ca affiche ce genre de chose:
"<bound method Image.load of <PIL.Image.Image image mode=RGBA size=810x882 at 0x225C4ECD670>>"
Je ne comprend pas pourquoi le print([x,y]) ne fonctionne pas. Peut etre que la rotation de la carte n'est pas prise en compte mais même lorsque je remplace la variable "a" par une valeur dans la ligne de rotation de la carte, ça me fait le même message.
J'ai essayé de faire le programme que tu m'as dit. Mais j'ai une erreur quand je veux afficher les pixels.
carte = Image.open("Untitled Folder/2_of_spades.png") #carte= carte.rotate(32, expand=1, fillcolor='green') print (carte.size) imshow(np.asarray(carte))
Donc ça j'ai pas touché, c'est ce qui permet d'afficher une carte basique.
Ensuite j'ai essayé de faire ta boucle:
for a in range (0, 90): carte = carte.rotate(a, expand=1, fillcolor='green') #selon moi la carte réalise une rotation de a qui est compris entre et 0 et 90 pixel = carte.load #La variable pixel vis-à-vis de la carte for x in range(0,carte.width): # calcul des pixels sur la hauteur for y in range(0,carte.height): # calcul des pixels sur la largeur print(pixel[x,y])# afficher dans un premier temps tous les pixels
J'ai une erreur sur l'affichage qui me dit: "TypeError: 'method' object is not subscriptable"
Si je fais un print(a), là j'ai pleins de 0 à la suite donc logiquement 90 si je ne me trompe pas .
Et si je fais un print(pixel) ca affiche ce genre de chose:
"<bound method Image.load of <PIL.Image.Image image mode=RGBA size=810x882 at 0x225C4ECD670>>"
Je ne comprend pas pourquoi le print([x,y]) ne fonctionne pas. Peut etre que la rotation de la carte n'est pas prise en compte mais même lorsque je remplace la variable "a" par une valeur dans la ligne de rotation de la carte, ça me fait le même message.
Phil_1857
Messages postés
1872
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
28 février 2024
168
Modifié le 12 nov. 2020 à 11:26
Modifié le 12 nov. 2020 à 11:26
Pourtant, tu l'as déjà fait dans ton programme ce truc-là:
Et ca marchait, la preuve:
Essaie juste ça, pour voir (pas de boucle de 0 à 90) :
for x in range(0,carte.width): # calcul des pixels sur la hauteur for y in range(0,carte.height): # calcul des pixels sur la largeur print(pixel[x,y])
Et ca marchait, la preuve:
Essaie juste ça, pour voir (pas de boucle de 0 à 90) :
carte = carte.rotate(0.0, expand=1, fillcolor='green') pixel = carte.load for x in range(0,carte.width): for y in range(0,carte.height): print(pixel[x,y])
T-Rence
Messages postés
57
Date d'inscription
samedi 27 juillet 2019
Statut
Membre
Dernière intervention
16 décembre 2020
12 nov. 2020 à 12:50
12 nov. 2020 à 12:50
Oui ça marchait mais pas dans cet encart.
J'ai essayé en enlevant la boucle comme tu m'as dis, mais j'ai la même erreur.
Je ne vois pas à quoi ça peut être dû.
Peut être il y a un ordre spécifique à respecter ?
J'ai essayé en enlevant la boucle comme tu m'as dis, mais j'ai la même erreur.
Je ne vois pas à quoi ça peut être dû.
Peut être il y a un ordre spécifique à respecter ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Phil_1857
Messages postés
1872
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
28 février 2024
168
Modifié le 12 nov. 2020 à 13:03
Modifié le 12 nov. 2020 à 13:03
"Oui ça marchait mais pas dans cet encart."
Ca veut dire quoi, ça ?
C'est quoi un encart ???
Tu as bien toujours ton code qui affiche les pixels, non ?
Pourquoi ca ne fonctionnerait plus maintenant ? (sans faire de rotation, par exemple)
Ca veut dire quoi, ça ?
C'est quoi un encart ???
Tu as bien toujours ton code qui affiche les pixels, non ?
Pourquoi ca ne fonctionnerait plus maintenant ? (sans faire de rotation, par exemple)
T-Rence
Messages postés
57
Date d'inscription
samedi 27 juillet 2019
Statut
Membre
Dernière intervention
16 décembre 2020
12 nov. 2020 à 13:12
12 nov. 2020 à 13:12
Oui je l'ai toujours et il fonctionne.
En faite je passe par jupyter. Donc je peux faire étape par étape je sais pas trop si tu vois ce que je veux dire ?
Et du coup j'ai une étape que pour ça et ça ne fonctionne pas.
Mais le calcul des pixels sur la carte normal et bien ça fonctionne nickel
En faite je passe par jupyter. Donc je peux faire étape par étape je sais pas trop si tu vois ce que je veux dire ?
Et du coup j'ai une étape que pour ça et ça ne fonctionne pas.
Mais le calcul des pixels sur la carte normal et bien ça fonctionne nickel
Phil_1857
Messages postés
1872
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
28 février 2024
168
12 nov. 2020 à 13:21
12 nov. 2020 à 13:21
Ben justement, dans le code qui calcule sur carte normale, puisque ca marche ici, ajoute à la fin:
si il y a bien une carte affichée, ca doit marcher
carte = carte.rotate(0.0, expand=1, fillcolor='green') pixel = carte.load for x in range(0,carte.width): for y in range(0,carte.height): print(pixel[x,y])
si il y a bien une carte affichée, ca doit marcher
T-Rence
Messages postés
57
Date d'inscription
samedi 27 juillet 2019
Statut
Membre
Dernière intervention
16 décembre 2020
12 nov. 2020 à 13:52
12 nov. 2020 à 13:52
En la mettant dans le calcul des pixels, le résultat est identique. C'est à dire que si je mets cette ligne en commentaire ou non le résultat ne change pas.
Peut-être que cette ligne de code n'est pas bonne pourtant la rotation fonctionne bien
Peut-être que cette ligne de code n'est pas bonne pourtant la rotation fonctionne bien
Phil_1857
Messages postés
1872
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
28 février 2024
168
12 nov. 2020 à 15:41
12 nov. 2020 à 15:41
Donc, si tu applique le code de ma réponse de 13h21,
ca affiche bien les pixels comme sur l'image de ma réponse de 11h24, c'est bien ça ?
ca affiche bien les pixels comme sur l'image de ma réponse de 11h24, c'est bien ça ?
T-Rence
Messages postés
57
Date d'inscription
samedi 27 juillet 2019
Statut
Membre
Dernière intervention
16 décembre 2020
12 nov. 2020 à 15:44
12 nov. 2020 à 15:44
Oui j'ai bien le même affichage. Mais il est identique s'il y a la ligne de code de rotation ou non. Je ne vois pas de différence.
Est ce qu'est c'est dû au "0.0"?
Est ce qu'est c'est dû au "0.0"?
Phil_1857
Messages postés
1872
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
28 février 2024
168
12 nov. 2020 à 16:08
12 nov. 2020 à 16:08
Ben évidement!
Rotation 0 degrés, la carte reste verticale !
Maintenant, tu essaye avec 20 au lieu de 0 pour voir ....
Rotation 0 degrés, la carte reste verticale !
Maintenant, tu essaye avec 20 au lieu de 0 pour voir ....
T-Rence
Messages postés
57
Date d'inscription
samedi 27 juillet 2019
Statut
Membre
Dernière intervention
16 décembre 2020
12 nov. 2020 à 16:39
12 nov. 2020 à 16:39
Effectivement là le résultat est différent et ça fonctionne.
Je ne sais pas pourquoi ça ne marchais pas avant. Mon code n'avait pas l'air mauvais.
Donc à partir de là je n'est pas compris la suite de ton idée
Je ne sais pas pourquoi ça ne marchais pas avant. Mon code n'avait pas l'air mauvais.
Donc à partir de là je n'est pas compris la suite de ton idée
Phil_1857
Messages postés
1872
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
28 février 2024
168
Modifié le 12 nov. 2020 à 17:02
Modifié le 12 nov. 2020 à 17:02
Je proposais donc de faire un bout de code pour analyser la relation angle / perte de pixels
La boucle qui varie de 1 à 91 (puisque le dernier chiffre est exclu de la liste, ca va donc de 1 à 90), non pas pour afficher les pixels, mais pour les compter, comme au début de ce projet
Ca donnerait une liste de ce genre (je mets des valeurs bidon, évidemment) :
Et en examinant la liste complète, on verrait peut-être que l'on perd 10 pixels a chaque degré
comme ici: 1 degré: -10 pixels, 2 degrés: -20 pixels
donc perte = 10 pixels/degré
Et donc en test de reconnaissance réel:
Affichage carte
Rotation 30 degrés (par exemple), donc perte: 30 x 10 = 300 pixels
Comptage des pixels (noirs ou rouges)
Ajout de 300 pixels : on doit retomber sur un nombre de pixels présent dans l'une des 4 listes
du début (pixels_trefle, etc ...)
Fais le déjà pour une seule carte, c'est juste pour vérifier l'hypothèse
La boucle qui varie de 1 à 91 (puisque le dernier chiffre est exclu de la liste, ca va donc de 1 à 90), non pas pour afficher les pixels, mais pour les compter, comme au début de ce projet
Ca donnerait une liste de ce genre (je mets des valeurs bidon, évidemment) :
angle nb de pixels delta par rapport au nb de pixels sans tourner la carte (on les a déjà dans tes 4 listes par figure) 1 15200 10 2 14850 20 etc ...
Et en examinant la liste complète, on verrait peut-être que l'on perd 10 pixels a chaque degré
comme ici: 1 degré: -10 pixels, 2 degrés: -20 pixels
donc perte = 10 pixels/degré
Et donc en test de reconnaissance réel:
Affichage carte
Rotation 30 degrés (par exemple), donc perte: 30 x 10 = 300 pixels
Comptage des pixels (noirs ou rouges)
Ajout de 300 pixels : on doit retomber sur un nombre de pixels présent dans l'une des 4 listes
du début (pixels_trefle, etc ...)
Fais le déjà pour une seule carte, c'est juste pour vérifier l'hypothèse
T-Rence
Messages postés
57
Date d'inscription
samedi 27 juillet 2019
Statut
Membre
Dernière intervention
16 décembre 2020
13 nov. 2020 à 10:54
13 nov. 2020 à 10:54
Bonjour Phil,
J'ai alors pour la carte 10 de pique, ce qui est connu: 114 792 pixels noir
Pour une rotation de 10° j'ai: 115 127 pixels noir soit 335 pixels de différence
Pour une rotation de 20° j'ai: 115 119 pixels noir soit 327 pixels de différence
Pour une rotation de 30° j'ai: 115 101 pixels noir soit 309 pixels de différence
Pour une rotation de 40° j'ai: 115 114 pixels noir soit 322 pixels de différence
Pour une rotation de 50° j'ai: 115 153 pixels noir soit 361 pixels de différence
Pour une rotation de 60° j'ai: 115 100 pixels noir soit 308 pixels de différence
Pour une rotation de 70° j'ai: 115 115 pixels noir soit 323 pixels de différence
Pour une rotation de 80° j'ai: 115 126 pixels noir soit 334 pixels de différence
Pour une rotation de 90° j'ai: 114 792 pixels noir soit 0 pixels de différence
J'en conclus pour cette carte qu'il n'y a pas de variable fixe pour le degré de variation et le nombre de pixels de différence.
J'ai donc testé sur une seconde carte pour voir si pour chaque rotation la différence de pixels est la même pour chaque degré de rotation.
J'ai pris le 9 de pique, ce qui est connu: 103 151 pixels noir:
Pour une rotation de 10° j'ai: 103 479 pixels noir soit 328 pixels de différence
Pour une rotation de 20° j'ai: 103 484 pixels noir soit 333 pixels de différence
A partir de là on voit déjà que les valeurs ne sont pas identiques vis-à-vis de la carte précédente.
J'ai alors pour la carte 10 de pique, ce qui est connu: 114 792 pixels noir
Pour une rotation de 10° j'ai: 115 127 pixels noir soit 335 pixels de différence
Pour une rotation de 20° j'ai: 115 119 pixels noir soit 327 pixels de différence
Pour une rotation de 30° j'ai: 115 101 pixels noir soit 309 pixels de différence
Pour une rotation de 40° j'ai: 115 114 pixels noir soit 322 pixels de différence
Pour une rotation de 50° j'ai: 115 153 pixels noir soit 361 pixels de différence
Pour une rotation de 60° j'ai: 115 100 pixels noir soit 308 pixels de différence
Pour une rotation de 70° j'ai: 115 115 pixels noir soit 323 pixels de différence
Pour une rotation de 80° j'ai: 115 126 pixels noir soit 334 pixels de différence
Pour une rotation de 90° j'ai: 114 792 pixels noir soit 0 pixels de différence
J'en conclus pour cette carte qu'il n'y a pas de variable fixe pour le degré de variation et le nombre de pixels de différence.
J'ai donc testé sur une seconde carte pour voir si pour chaque rotation la différence de pixels est la même pour chaque degré de rotation.
J'ai pris le 9 de pique, ce qui est connu: 103 151 pixels noir:
Pour une rotation de 10° j'ai: 103 479 pixels noir soit 328 pixels de différence
Pour une rotation de 20° j'ai: 103 484 pixels noir soit 333 pixels de différence
A partir de là on voit déjà que les valeurs ne sont pas identiques vis-à-vis de la carte précédente.
Phil_1857
Messages postés
1872
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
28 février 2024
168
Modifié le 13 nov. 2020 à 11:51
Modifié le 13 nov. 2020 à 11:51
Bonjour T-Rence,
Effectivement, on ne peut pas en tirer de loi, c'est un peu disparate
Il va falloir trouver autre chose, mais quoi ...
Est-ce que ton prof à la solution, au moins ?
Et les autres, ils font comment ?
Effectivement, on ne peut pas en tirer de loi, c'est un peu disparate
Il va falloir trouver autre chose, mais quoi ...
Est-ce que ton prof à la solution, au moins ?
Et les autres, ils font comment ?
T-Rence
Messages postés
57
Date d'inscription
samedi 27 juillet 2019
Statut
Membre
Dernière intervention
16 décembre 2020
13 nov. 2020 à 12:15
13 nov. 2020 à 12:15
Je pense qu'il doit l'avoir oui. En faite c'est plus "découverte de la recherche" et suite à ça on va devoir écrire un article et le présenter etc. Le soucis c'est que le programme compte dans la "note" et comme je suis pas un dev et que j'ai jamais codé bah je galère un peu. Les autres je ne sais pas vraiment comment ils font vu que tout se fait à distance et que je ne connais personne c'est compliqué.
Tu penses que le zoom serait plus simple à traiter ? Au pire je sacrifie la rotation pour le zoom.
Tu penses que le zoom serait plus simple à traiter ? Au pire je sacrifie la rotation pour le zoom.
Phil_1857
Messages postés
1872
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
28 février 2024
168
13 nov. 2020 à 13:22
13 nov. 2020 à 13:22
"comme je suis pas un dev et que j'ai jamais codé ... "
Ok, mais avant de coder en Python (ou autre langage), il faut déjà trouver l'idée sur le papier,
l'algorithme qui permettra de tester une carte
J'ai repris ta liste pixels trèfle[] et j'ai cherché une constante entre les 10 valeurs
puisque par rapport à l'as, il y a 2 fois plus de figurines 'trèfle' sur le 2, 3fois plus sur le 3, etc ...
Mais ca ne marche pas car sur une carte il n'y a pas les trèfles, il y a aussi le chiffre de la valeur,
avec au dessous la figurine en plus petit, et même, sur l'as, la figurine est parfois différente et décorée
tu peux tester le zoom pour voir si c'est mieux, il y aura peut-être une proportionnalité avec le facteur de zoom
Ok, mais avant de coder en Python (ou autre langage), il faut déjà trouver l'idée sur le papier,
l'algorithme qui permettra de tester une carte
J'ai repris ta liste pixels trèfle[] et j'ai cherché une constante entre les 10 valeurs
puisque par rapport à l'as, il y a 2 fois plus de figurines 'trèfle' sur le 2, 3fois plus sur le 3, etc ...
Mais ca ne marche pas car sur une carte il n'y a pas les trèfles, il y a aussi le chiffre de la valeur,
avec au dessous la figurine en plus petit, et même, sur l'as, la figurine est parfois différente et décorée
tu peux tester le zoom pour voir si c'est mieux, il y aura peut-être une proportionnalité avec le facteur de zoom
T-Rence
Messages postés
57
Date d'inscription
samedi 27 juillet 2019
Statut
Membre
Dernière intervention
16 décembre 2020
13 nov. 2020 à 13:56
13 nov. 2020 à 13:56
Je vais essayer de réaliser un zoom sur la photo. Je n'avais pas réussi en début de semaine. Je retente et dès que j'ai les valeurs de zoom je te dis ça
georges97
Messages postés
12612
Date d'inscription
lundi 31 janvier 2011
Statut
Contributeur
Dernière intervention
30 novembre 2024
2 420
13 nov. 2020 à 14:36
13 nov. 2020 à 14:36
Bonjour T-Rence, bonjour Phil_1857,
J'ai suivi ce fil dans le but de me perfectionner en python. Quand on voit les choses de l'extérieur, plutôt que d'avoir les contraintes "scolaires" de T-rence, on essaie de trouver, par jeu, une solution.
Voila ma proposition, plutôt que de réaliser un tableau ou plutôt une liste qui corresponde à chaque degré d'angle ou à chaque niveau de zoom, pourquoi ne pas générer une liste qui corresponde aux limites de chaque carte.
Je m'explique:
Si par exemple, en rotation les valeurs vont de disons 11000 à 15000 pour l'as et que pour le6 elle vont de 79444 à 82000, il "suffirait" d'établir la liste de base correspondant à un angle de 0°, une seconde liste correspondant à la position extrême de 359° (n vérifiant que cette liste inclue bien les valeurs extrêmes des angles intermédiaires.
Ensuite, en établissant un dictionnaire (fonction python, à l'attention de T-Rence bien sûr)) correspondant à chaque couple valeur inférieure/valeur supérieure, on serait sûr de retourner la bonne carte quelque soit l'angle (ou le zoom) présenté.
@ Phil_1857, il se peut que mon idée soit farfelue ou irréalisable mais considère la comme une simple réflexion par rapport au travail que vous avez tous deux réalisé.
Cordialement
J'ai suivi ce fil dans le but de me perfectionner en python. Quand on voit les choses de l'extérieur, plutôt que d'avoir les contraintes "scolaires" de T-rence, on essaie de trouver, par jeu, une solution.
Voila ma proposition, plutôt que de réaliser un tableau ou plutôt une liste qui corresponde à chaque degré d'angle ou à chaque niveau de zoom, pourquoi ne pas générer une liste qui corresponde aux limites de chaque carte.
Je m'explique:
Si par exemple, en rotation les valeurs vont de disons 11000 à 15000 pour l'as et que pour le6 elle vont de 79444 à 82000, il "suffirait" d'établir la liste de base correspondant à un angle de 0°, une seconde liste correspondant à la position extrême de 359° (n vérifiant que cette liste inclue bien les valeurs extrêmes des angles intermédiaires.
Ensuite, en établissant un dictionnaire (fonction python, à l'attention de T-Rence bien sûr)) correspondant à chaque couple valeur inférieure/valeur supérieure, on serait sûr de retourner la bonne carte quelque soit l'angle (ou le zoom) présenté.
@ Phil_1857, il se peut que mon idée soit farfelue ou irréalisable mais considère la comme une simple réflexion par rapport au travail que vous avez tous deux réalisé.
Cordialement
T-Rence
Messages postés
57
Date d'inscription
samedi 27 juillet 2019
Statut
Membre
Dernière intervention
16 décembre 2020
13 nov. 2020 à 16:08
13 nov. 2020 à 16:08
Bonjour Georges,
Merci pour ta contribution.
Si je comprend bien ton raisonnement, il faudrait donc construire une liste par angle qui comprend chaque limite de pixel pour chaque carte ?
Par exemple pour un angle de 10°: Réaliser par exemple pour l'as un ensemble style: [11 000 - 11 500] et ainsi de suite pour chaque carte ?
Ce qui signifie donc réaliser pleins de liste pour chaque angle ?
Pour ce qui est du zoom je n'arrive vraiment pas à zoomer.
J'ai alors demandé à mes collègues où ils en sont dans le projet et pour la plupart ils sont dans la même situation. Ils n'arrivent pas à zoomer.
Un collègue vient de me parler de crop pour la partie zoom. Je vais essayer d'approfondir de ce côté là voir ce qui est possible.
Merci pour ta contribution.
Si je comprend bien ton raisonnement, il faudrait donc construire une liste par angle qui comprend chaque limite de pixel pour chaque carte ?
Par exemple pour un angle de 10°: Réaliser par exemple pour l'as un ensemble style: [11 000 - 11 500] et ainsi de suite pour chaque carte ?
Ce qui signifie donc réaliser pleins de liste pour chaque angle ?
Pour ce qui est du zoom je n'arrive vraiment pas à zoomer.
J'ai alors demandé à mes collègues où ils en sont dans le projet et pour la plupart ils sont dans la même situation. Ils n'arrivent pas à zoomer.
Un collègue vient de me parler de crop pour la partie zoom. Je vais essayer d'approfondir de ce côté là voir ce qui est possible.