# # # # # # # # # # # # # # Importation des bibliothèques/modules # # # # # # # # # # # # # # from tkinter import * from sense_hat import SenseHat from picamera import PiCamera from time import sleep from PIL import * import time; import os from fractions import Fraction # # # # # # # # # # # # # # Initialisation # # # # # # # # # # # # # # camera = PiCamera(resolution=(480,480)) #Definition de la résolution de la camera camera.rotation=0 #Rotation de la prise de vue de la camera afin de faciliter les deplacements de l'echantillon sense = SenseHat() # # # # # # # # # # # # # # Définition des fonctions # # # # # # # # # # # # # # def eco() : return (sense.clear(0,0,0)) #Coupure des Leds def get_value(k) : j = (int(k) + 27) * 2 #Conversion des valeurs en pourcentages en valeurs allant de 0 à 255 O = [0, 0, 0] #Mise à l'arret des leds X = [0, j, 0] #Modification de l'intensitée lumineuse des leds question = [ X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X ] #Permet de sélectionner toute la matrice de led return sense.set_pixels(question) #Retourne à chaque appel de la fonction get_value une nouvelle valeur du module de led def marche() : global bouton2,bouton3 #Définition des boutons "bouton2","bouton3" en global pour pouvoir les manipuler dans d'autres fonctions bouton1.destroy() #Destruction du bouton "bouton1" bouton2=Button(frame, text="Arrêt", command= arret) #Appel de la fonction arret lors de l'appuie sur le bouton2 nommé "Arrêt" bouton2.pack(side=RIGHT) bouton3=Button(frame, text="Photo", command= photo) #Appel de la fonction photo lors de l'appuie sur le bouton3 nommé "Photo" bouton3.pack(side=LEFT) camera.framerate = 30 #Paramétrage du nombre d'image prise par seconde (30) return camera.start_preview(fullscreen = False, window= (0,0,480,480)) #Mise en marche de la camera avec une modification de la taille de fenêtre pour qu'elle soit adapté au moniteur def arret() : global bouton1 #Définition du bouton "bouton1" en global pour pouvoir le manipuler dans d'autres fonctions bouton3.destroy() #Destruction du bouton "bouton3" bouton2.destroy() #Destruction du bouton "bouton2" bouton1=Button(frame, text="Démarrer", command= marche) #Appel de la fonction marche lors de l'appuie sur le bouton1 nommé "Démarrer" bouton1.pack(side=BOTTOM) return camera.stop_preview() #Mise à l'arret de la camera def Traitement(t) : #Dans cette fonction on va écrire des commandes directement dans le terminal à l'aide de la commande 'os.system' os.system('sudo python /home/pi/Documents/Analyser.py') #Lancement du programme "Analysem.py" def reconstruction(): global fen1 #Définition de la fenêtre fen1 en global pour pouvoir la manipuler dans d'autres fonctions fen.destroy() #Destruction de la fenêtre "fen" fen1=Toplevel() #Création de la fenêtre secondaire fen1.title('Traitement/Analyse') #Définition du titre de la fenêtre "fen1" fen1['bg']='lightgrey' #Couleur de fond de la fenêtre "fen1" fen1.geometry("{0}x{1}+0+0".format(fenetre.winfo_screenwidth(), fenetre.winfo_screenheight()-72)) #Modification de la taille de la fenêtre "fen1" pour que cela corresponde avec le moniteur os.system('rm /home/pi/Desktop/reconstruction2D.png') #Suppression de l'ancienne reconstruction2D os.system('python /home/pi/Documents/reconstructionthomson.py build') #Lancement du programme OpenCV par le biais d'une ligne de code envoyé dans le terminal time.sleep(2) #Temporisation anti-bug photo=Image.open('/home/pi/Desktop/reconstruction2D.png') #Ouverture de l'image im = PhotoImage(file='/home/pi/Desktop/reconstruction2D.png') #Définition de l'image frame4=Frame(fen1,bg='lightgrey') #Création de la frame "frame4" qui va accueillir nos boutons frame4.pack(side=RIGHT) canvas=Canvas(fen1,height=480,width=480,bg='lightgrey') #Création de l'espace qui va accueillir l'image canvas.create_image(0,0,anchor=NW,image=im) #Importation de l'image dans l'espace canvas canvas.pack() bouton15=Button(frame4, text="Retour", command=retour) #Appel de la fonction retour lors de l'appuie sur le bouton15 nommé "Retour" bouton15.pack(side=BOTTOM) bouton11=Button(frame4, text="Analyse", command= lambda : Traitement(1)) #Appel de la fonction Traitement lors de l'appuie sur le bouton11 nommé "Analyse" bouton11.pack(side=BOTTOM) bouton13=Button(frame4, text="Nouvelle capture", command=fen1.destroy) #Destruction de la fenêtre "fen1" lors de l'appuie sur le bouton1 nommé "Nouvelle capture" bouton13.pack(side=BOTTOM) fen1.mainloop() def retour(): global fen #Définition de la fenêtre "fen" en global pour pouvoir la manipuler dans d'autres fonctions fen1.destroy() #Destruction de la fenêtre "fen1" fen=Toplevel() #Création de la fenêtre secondaire fen.title('Traitement/Analyse') #Définition du titre de la fenêtre "fen" fen['bg']='lightgrey' #Couleur de fond de la fenêtre "fen" fen.geometry("{0}x{1}+0+0".format(fenetre.winfo_screenwidth(), fenetre.winfo_screenheight()-72)) #Modification de la taille de la fenêtre "fen" pour que cela corresponde avec le moniteur photo=Image.open("/home/pi/Desktop/image.png") #Ouverture de l'image im = PhotoImage(file="/home/pi/Desktop/image.png") #Définition de l'image frame3=Frame(fen,bg='lightgrey') #Création de la frame "frame3" qui va accueillir nos boutons frame3.pack(side=RIGHT) canvas=Canvas(fen,height=480,width=480,bg='lightgrey') #Création de l'espace qui va accueillir l'image canvas.create_image(0,0,anchor=NW,image=im) #Importation de l'image dans l'espace canvas canvas.pack() bouton15=Button(frame3, text="Reconstruction 2D", command=reconstruction) #Appel de la fonction reconstruction lors de l'appuie sur le bouton15 nommé "reconstruction" bouton15.pack(side=BOTTOM) bouton13=Button(frame3, text="Nouvelle capture", command=fen.destroy) #Destruction de la fenêtre "fen" lors de l'appuie sur le bouton1 nommé "Nouvelle capture" bouton13.pack(side=BOTTOM) fen.mainloop() def photo() : global bouton1,fen #Définition du bouton "bouton1" ainsi que de la fenêtre "fen" en global pour pouvoir les manipuler dans d'autres fonctions bouton3.destroy() #Destruction du bouton "bouton3" bouton2.destroy() #Destruction du bouton "bouton2" bouton1=Button(frame, text="Démarrer", command= marche) #Appel de la fonction marche lors de l'appuie sur le bouton1 nommé "Démarrer" bouton1.pack(side=BOTTOM) fen=Toplevel() #Création de la fenêtre secondaire fen.title('Traitement/Analyse') #Définition du titre de la fenêtre "fen" fen['bg']='lightgrey' #Couleur de fond de la fenêtre "fen" fen.geometry("{0}x{1}+0+0".format(fenetre.winfo_screenwidth(), fenetre.winfo_screenheight()-72)) #Destruction de la fenêtre "fen" lors de l'appuie sur le bouton1 nommé "Nouvelle capture" camera.framerate = Fraction(1,5) #Modifiction du nombre d'image prise par seconde (1 image par seconde) camera.exposure_mode = 'off' #Modification du mode d'exposition pour pouvoir modifié le temps d'exposition du capteur camera.shutter_speed = 100000 #Modification du temps d'exposition du capteur camera.capture('/home/pi/Desktop/image.png') #Capture de l'image camera.stop_preview() #Mise à l'arret de la caméra photo=Image.open("/home/pi/Desktop/image.png") #Ouverture de l'image im = PhotoImage(file="/home/pi/Desktop/image.png") #Définition de l'image frame3=Frame(fen,bg='lightgrey') #Création de la frame "frame3" qui va accueillir nos boutons frame3.pack(side=RIGHT) canvas=Canvas(fen,height=480,width=480,bg='lightgrey') #Création de l'espace qui va accueillir l'image canvas.create_image(0,0,anchor=NW,image=im) #Importation de l'image dans l'espace canvas canvas.pack() bouton15=Button(frame3, text="Reconstruction 2D", command=reconstruction) #Appel de la fonction reconstruction lors de l'appuie sur le bouton15 nommé "reconstruction" bouton15.pack(side=BOTTOM) bouton13=Button(frame3, text="Nouvelle capture", command=fen.destroy) #Destruction de la fenêtre "fen" lors de l'appuie sur le bouton1 nommé "Nouvelle capture" bouton13.pack(side=BOTTOM) fen.mainloop() # # # # # # # # # # # # # # Création de la fenêtre principale # # # # # # # # # # # # # # fenetre = Tk() #Définition de la fenêtre avec le module TKinter fenetre.title('usco_pi') #Titre de la fenêtre fenetre['bg']='lightgrey' #Couleur de fond fenetre.geometry("{0}x{1}+0+0".format(fenetre.winfo_screenwidth(), fenetre.winfo_screenheight()-72)) #Destruction de la fenêtre "fen" lors de l'appuie sur le bouton1 nommé "Nouvelle capture" frame=Frame(fenetre) #Création de la fenètre qui va acceuillir nos différents widgets frame.pack(side=RIGHT) # # # # # # # # # # # # # # Widgets # # # # # # # # # # # # # # bouton4=Button(frame, text="Arrêt LED", command= eco) #Appel de la fonction eco lors de l'appuie sur le bouton4 nommé "Arrêt LED" bouton4.pack(side=TOP) scale = Scale(frame,orient='vertical',label='Luminosité (%)',tickinterval=10,sliderlength=20,width=50,length=275,background='lightgrey', from_=100, to=0, command=get_value) #Appel de la fonction get_value lors du déplacement du curseur nommé "Luminosité (%)" scale.pack(side=TOP) bouton1=Button(frame, text="Démarrer", command= marche) #Appel de la fonction marche lors de l'appuie sur le bouton1 nommé "Démarrer" bouton1.pack(side=BOTTOM) fenetre.mainloop()