1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170
| from tkinter import *
import random
from math import *
from PIL import Image
def Analyse():
im=Image.open("Sans titre.jpg")
nbcarré=0
nbpixels=0
#on recupere les dimensions de l'image et on les stocke dans un tuple nomme size
a,b=im.size
size=(a,b)
print("taille de l'image")
print(" largeur :",a)
print(" hauteur :",b)
# on calcule le nombre total de pixels -1 dans l'image
c=a*b-1
print(c)
# on splitte les composantes de l'image
r,g,b=im.split()
# on cree 3 images differentes de nos composantes pour les visualiser eventuellement
listr=list(r.getdata())
newr=Image.new("L",size)
newr.putdata(listr)
newr.save("save_carréR.jpg")
listg=list(g.getdata())
newg=Image.new("L",size)
newg.putdata(listg)
newg.save("save_carréG.jpg")
listb=list(b.getdata())
newb=Image.new("L",size)
newb.putdata(listb)
newb.save("save_carréB.jpg")
# on applique notre filtre reducteur a la composante R qui est chargee dans "listr"
dedans=0
cpt=0
cpt1=0
for i in range (0,c):
if dedans==0 :
cpt = 0
else :
cpt = cpt + 1
if listg[i]<120:
dedans = 1
listg[i]=0
nbpixels=nbpixels+1
else :
if dedans==1:
print(cpt)
cpt1=cpt
dedans = 0
nbcarré=nbpixels/(cpt1*cpt1)
print("il y a ",int(nbcarré)," carrés.")
def test(a,x_a,y_a,Fibo,Fibo2,r,j):
print("coucou")
for i in range(a):
if (sqrt((x_a-Fibo[i])**2+(y_a-Fibo2[i])**2))>((sqrt((r**2)+(r**2)))*2):
j=j+1
else:
j=j
if j==a:
print("bon")
return 1
else:
print("pas bon")
return 0
def carré():
""" Dessine un carré de centre (x,y) et de coté 2r """
#i c'est le nombre de carré
#a numéro du carré
#h case du tableau correspondant au carré
i = random.randint(1,15)
a = 0
h = 0
j=0
while a<i :
x_a = random.randint(30,Largeur-30)
y_a = random.randint(30,Hauteur-30)
r = 20
if a==0:
Fibo=[x_a]
Fibo2=[y_a]
xmin=x_a-r
ymin=y_a-r
xmax=x_a+r
ymax=y_a+r
Carre = Canevas.create_rectangle(xmin,ymin,xmax,ymax, outline='red', fill='red')
print("coordonée sur x du carré numéro ",a+1," : ",Fibo[h])
print("coordonée sur y du carré numéro ",a+1," : ",Fibo2[h])
h=h+1
a=a+1
elif test(a,x_a,y_a,Fibo,Fibo2,r,j):
Fibo.append(x_a)
Fibo2.append(y_a)
xmin=x_a-r
ymin=y_a-r
xmax=x_a+r
ymax=y_a+r
Carre = Canevas.create_rectangle(xmin,ymin,xmax,ymax, outline='red', fill='red')
print("coordonée sur x du carré numéro ",a+1," : ",Fibo[h])
print("coordonée sur y du carré numéro ",a+1," : ",Fibo2[h])
h=h+1
a=a+1
else:
print("recommencer")
print(Fibo)
print(Fibo2)
print("il y'a ",i,"carrés")
def Effacer():
""" Efface la zone graphique """
Canevas.delete(ALL)
# Création de la fenêtre principale (main window)
Mafenetre = Tk()
Mafenetre.title('Carré en folie')
# Création d'un widget Canvas (zone graphique)
Largeur = 480
Hauteur = 320
Canevas = Canvas(Mafenetre, width = Largeur, height =Hauteur, bg ='white')
Canevas.pack(padx =5, pady =5)
a=Largeur
b=Hauteur
print("taille de l'image")
print(" largeur :",a)
print(" hauteur :",b)
# on calcule le nombre total de pixels -1 dans l'image
c=a*b-1
print("Il y'a ",c," pixels")
# Création d'un widget Button (bouton Go)
BoutonGo = Button(Mafenetre, text ='Go', command = carré)
BoutonGo.pack(side = LEFT, padx = 10, pady = 10)
# Création d'un widget Button (bouton analyse)
BoutonAna = Button(Mafenetre, text ='Analyse', command = Analyse)
BoutonAna.pack(side = LEFT, padx = 10, pady = 10)
# Création d'un widget Button (bouton Effacer)
BoutonEffacer = Button(Mafenetre, text ='Effacer', command = Effacer)
BoutonEffacer.pack(side = LEFT, padx = 5, pady = 5)
# Création d'un widget Button (bouton Quitter)
BoutonQuitter = Button(Mafenetre, text ='Quitter', command = Mafenetre.destroy)
BoutonQuitter.pack(side = LEFT, padx = 5, pady = 5)
#attribue du carré
Mafenetre.mainloop() |
Partager