Grouper des pixels
Fermé
Joseph_Hocquet
Messages postés
17
Date d'inscription
lundi 5 juillet 2021
Statut
Membre
Dernière intervention
28 août 2022
-
Modifié le 23 avril 2022 à 00:05
mamiemando Messages postés 33369 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 22 novembre 2024 - 25 avril 2022 à 12:17
mamiemando Messages postés 33369 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 22 novembre 2024 - 25 avril 2022 à 12:17
A voir également:
- Combien y a-t-il de bateaux dans la zone de 475 pixels de large et 1000 pixels de haut à partir du coin supérieur gauche de cette image ?
- Image Resizer : changer les dimensions d'une image sur PC - Guide
- Zone telechargement - Accueil - Outils
- Windows 11 barre des taches a gauche - Guide
- Image libre de droit gratuite google - Guide
- Recherche à partir d'une image - Guide
4 réponses
yg_be
Messages postés
23342
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 novembre 2024
Ambassadeur
1 551
22 avril 2022 à 17:07
22 avril 2022 à 17:07
bonjour,
difficile de deviner ce que tu essaies de faire à partir d'un extrait de ton programme.
peux-tu partager un programme que nous pouvons tester?
difficile de deviner ce que tu essaies de faire à partir d'un extrait de ton programme.
peux-tu partager un programme que nous pouvons tester?
Joseph_Hocquet
Messages postés
17
Date d'inscription
lundi 5 juillet 2021
Statut
Membre
Dernière intervention
28 août 2022
22 avril 2022 à 18:21
22 avril 2022 à 18:21
Oui bien sûr :
from tkinter import *
from time import*
from math import*
from random import*
def presse(aaa) :
global touche
if not aaa.keysym in touche : touche.append(aaa.keysym)
def depresse(aaa) :
global touche
if aaa.keysym in touche : touche.remove(aaa.keysym)
def init() :
global c, touche, sol, map, px,py
px,py=0,0
lx,ly=20,18
touche=[]
sol=[]
a=1 #normalement je récupère un fichier mais pour ne pas importer, j'ai recrée ces fichier en minimaliste : ce ne sera que des traits
if a==0 :
q=open("data/sol.txt","r")
for i in range(2) : sol.append(q.readline())
map=open("data/map.txt","r").readline()
else :
for i in range(2) :
sol.append("00000000111111110000000011111111000000001111111100000000111111110000000011111111")
map=""
for i in range(20) :
for z in range(18) : map=map+"0"
c=[]
for y in range(144) :
c.append([])
for x in range(160) : c[y].append(canv.create_rectangle(x*6+1,y*6+1,x*6+7,y*6+7,outline=""))
refresh()
boucle()
def boucle() :
global px, py
if "Up" in touche :
py=py-1
refresh()
if "Down" in touche :
py=py+1
refresh()
canv.after(10,boucle)
def refresh() :
for y in range(144) :
for x in range(160) :
canv.itemconfig(c[y][x],fill=["black","white"][eval(sol[eval(map[(x+px)//8+(y+py)//8*8])][(x+px)%8+(y+py)%8*8])])
fen=Tk()
fen.geometry("961x865")
canv=Canvas(fen)
canv.place(x=0,y=0,height=865,width=961)
fen.bind("<Key>",presse)
fen.bind("<KeyRelease>",depresse)
init()
fen.mainloop()
yg_be
Messages postés
23342
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 novembre 2024
1 551
22 avril 2022 à 20:47
22 avril 2022 à 20:47
Peux-tu préciser le langage quand tu utilises les balises de code?
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Quand je teste ton programme, un refresh() prend 350 msec, dont 250 pour faire tous les calculs.
Ensuite l'affichage va se faire.
Tu pourrais donc gagner du temps en optimisant tes calculs.
Je n'ai pas essayé de comprendre ce que tu calculais.
eval() n'est peut-être pas nécessaire.
je vois que tu recalcules dans la boucle des x des formules que tu pourrais calculer dans la boucle des y.
Tous les petits rectangles sont ils modifiés à chaque fois? Sinon, il n'est peut-être pas nécessaire d'appeler itemconfig() pour chacun des rectangles.
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Quand je teste ton programme, un refresh() prend 350 msec, dont 250 pour faire tous les calculs.
Ensuite l'affichage va se faire.
Tu pourrais donc gagner du temps en optimisant tes calculs.
Je n'ai pas essayé de comprendre ce que tu calculais.
eval() n'est peut-être pas nécessaire.
je vois que tu recalcules dans la boucle des x des formules que tu pourrais calculer dans la boucle des y.
Tous les petits rectangles sont ils modifiés à chaque fois? Sinon, il n'est peut-être pas nécessaire d'appeler itemconfig() pour chacun des rectangles.
yg_be
Messages postés
23342
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 novembre 2024
1 551
>
yg_be
Messages postés
23342
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 novembre 2024
22 avril 2022 à 20:59
22 avril 2022 à 20:59
Tous ces calculs me donnent l'impression que tes données sont mal structurées.
mamiemando
Messages postés
33369
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
22 novembre 2024
7 801
23 avril 2022 à 00:08
23 avril 2022 à 00:08
Bonjour,
Comme l'explique cette discussion, tu peux utiliser la classe
Bonne chance
Comme l'explique cette discussion, tu peux utiliser la classe
PhotoImagequi te permettra de travailler à l'échelle du pixel "en live", ce qui t'évite d'avoir à tout rafraîchir.
Bonne chance
Joseph_Hocquet
Messages postés
17
Date d'inscription
lundi 5 juillet 2021
Statut
Membre
Dernière intervention
28 août 2022
23 avril 2022 à 14:45
23 avril 2022 à 14:45
OK je vais enlever tout les calculs de quel pixels où que le programme répète à chaque fois. Au début du programme, dans init(), il va créer une matrice. Mais dois-je la faire sous forme d'une énorme liste ou directement une image où je chercherai les infos avec getpixel ? Si c'est en une image, pourriez-vous me dire s'il existe un format noir et blanc où un pixel=un bit ? Pour l'instant j'ai trouvé seulement BMP mais ce ne marche pas avce mon python.
Merci
Merci
yg_be
Messages postés
23342
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 novembre 2024
1 551
23 avril 2022 à 15:10
23 avril 2022 à 15:10
Tu n'as pas expliqué ce que ton programme allait faire, donc difficile de te conseiller.
Moi j'utiliserais une matrice de booléens, pour indiquer si chaque pixel est blanc ou noir.
Quand cette matrice est modifiée, tu modifies en même temps le petit rectangle correspondant.
Moi j'utiliserais une matrice de booléens, pour indiquer si chaque pixel est blanc ou noir.
Quand cette matrice est modifiée, tu modifies en même temps le petit rectangle correspondant.
yg_be
Messages postés
23342
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 novembre 2024
1 551
23 avril 2022 à 15:12
23 avril 2022 à 15:12
Pourquoi utiliser getpixel() pour "interroger" l'image, alors que c'est ton programme qui a créé l'image? N'est-il pas plus logique de mémoriser l'image dans ton programme, via une matrice de booléens?
mamiemando
Messages postés
33369
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
22 novembre 2024
7 801
25 avril 2022 à 12:17
25 avril 2022 à 12:17
Mais dois-je la faire sous forme d'une énorme liste ou directement une image où je chercherai les infos avec getpixel ?
Si tu prends le temps de regarder le lien que je t'ai donné, tu verras que tu peux interagir directement avec l'objet
Si c'est en une image, pourriez-vous me dire s'il existe un format noir et blanc où un pixel=un bit
Ce sera plus qu'un bit dans les fait. Rien qu'en bitmap, chaque pixel coûte 3 ou 4 octets. Mais quoi qu'il en soit, peu importe la manière dont le format encode l'image, toi à ton niveau tu ne fais qu'interagir avec un objet
Pour l'instant j'ai trouvé seulement BMP mais ce ne marche pas avce mon python.
Comme le souligne yg_be, "ça ne marche pas" est une information trop vague sur un forum. Sans code, sans message d'erreur, impossible de t'en dire plus. Mais quoi qu'il en soit, tu n'as pas à te poser des questions existentielles sur comment fonctionne un format d'image : il y a généralement un objet (au hasard...
Bonne chance
Si tu prends le temps de regarder le lien que je t'ai donné, tu verras que tu peux interagir directement avec l'objet
PhotoImageet que tu n'as pas besoin de manipuler un autre objet.
Si c'est en une image, pourriez-vous me dire s'il existe un format noir et blanc où un pixel=un bit
Ce sera plus qu'un bit dans les fait. Rien qu'en bitmap, chaque pixel coûte 3 ou 4 octets. Mais quoi qu'il en soit, peu importe la manière dont le format encode l'image, toi à ton niveau tu ne fais qu'interagir avec un objet
PhotoImage.
Pour l'instant j'ai trouvé seulement BMP mais ce ne marche pas avce mon python.
Comme le souligne yg_be, "ça ne marche pas" est une information trop vague sur un forum. Sans code, sans message d'erreur, impossible de t'en dire plus. Mais quoi qu'il en soit, tu n'as pas à te poser des questions existentielles sur comment fonctionne un format d'image : il y a généralement un objet (au hasard...
PhotoImage) qui s'occupe de tout gérer pour toi.
Bonne chance