PopTeil commited on
Commit
2fe452c
·
verified ·
1 Parent(s): d626edf

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +24 -27
app.py CHANGED
@@ -34,7 +34,11 @@ def generate_text_with_gemini(api_key, prompt):
34
  response_json = {}
35
  print("Failed to decode JSON response")
36
 
37
- return response.status_code, response_json
 
 
 
 
38
 
39
  # Fonction de traitement de l'image et d'encadrement des personnes détectées
40
  def process_image(image, confidence_threshold=0.7):
@@ -73,17 +77,11 @@ uploaded_files = st.file_uploader("Choisissez des images (vous pouvez en ajouter
73
  # Saisie du seuil de confiance
74
  confidence_threshold = st.slider("Seuil de confiance pour la détection (0 à 1)", 0.0, 1.0, 0.7, 0.01)
75
 
76
- # Saisie du nombre de personnes attendues pour chaque image
77
  if uploaded_files:
78
- number_of_people = []
79
- for i in range(len(uploaded_files)):
80
- count = st.number_input(f"Nombre attendu de personnes pour l'image {i + 1}", min_value=1, value=10, step=1, key=f"input_{i}")
81
- number_of_people.append(count)
82
-
83
- max_absents = -1
84
- best_image = None
85
- best_image_name = ""
86
-
87
  for i, uploaded_file in enumerate(uploaded_files):
88
  # Lire l'image téléchargée
89
  image = Image.open(uploaded_file)
@@ -92,23 +90,22 @@ if uploaded_files:
92
  # Traitement de l'image
93
  modified_image, detected_persons = process_image(image, confidence_threshold=confidence_threshold)
94
 
95
- # Calculer le nombre d'absents
96
- absents = number_of_people[i] - detected_persons
97
- if absents < 0:
98
- absents = 0
99
-
100
  # Afficher l'image modifiée
101
  st.image(modified_image, caption=f'Image avec personnes détectées : {uploaded_file.name}', use_column_width=True)
102
-
103
- # Afficher le nombre d'absents
104
- st.write(f"**Nombre d'absents pour l'image {i + 1} ({uploaded_file.name}) : {absents}**")
 
 
 
105
 
106
- # Garder une trace de l'image avec le plus grand nombre d'absents
107
- if absents > max_absents:
108
- max_absents = absents
109
- best_image = modified_image
110
- best_image_name = uploaded_file.name
111
 
112
- # Afficher l'image avec le plus grand nombre d'absents
113
- if best_image:
114
- st.image(best_image, caption=f'Image avec le plus grand nombre d\'absents : {best_image_name}', use_column_width=True)
 
34
  response_json = {}
35
  print("Failed to decode JSON response")
36
 
37
+ # Renvoyer le texte généré ou un message d'erreur
38
+ if response.status_code == 200 and "candidates" in response_json:
39
+ return response_json["candidates"][0]["content"]["parts"][0]["text"]
40
+ else:
41
+ return "Erreur lors de la génération du texte."
42
 
43
  # Fonction de traitement de l'image et d'encadrement des personnes détectées
44
  def process_image(image, confidence_threshold=0.7):
 
77
  # Saisie du seuil de confiance
78
  confidence_threshold = st.slider("Seuil de confiance pour la détection (0 à 1)", 0.0, 1.0, 0.7, 0.01)
79
 
80
+ # Traitement des images et calcul de la moyenne
81
  if uploaded_files:
82
+ total_persons = 0
83
+ total_images = len(uploaded_files)
84
+
 
 
 
 
 
 
85
  for i, uploaded_file in enumerate(uploaded_files):
86
  # Lire l'image téléchargée
87
  image = Image.open(uploaded_file)
 
90
  # Traitement de l'image
91
  modified_image, detected_persons = process_image(image, confidence_threshold=confidence_threshold)
92
 
93
+ # Ajouter au total des personnes détectées
94
+ total_persons += detected_persons
95
+
 
 
96
  # Afficher l'image modifiée
97
  st.image(modified_image, caption=f'Image avec personnes détectées : {uploaded_file.name}', use_column_width=True)
98
+ st.write(f"**Personnes détectées sur l'image {i + 1} ({uploaded_file.name}) : {detected_persons}**")
99
+
100
+ # Calcul de la moyenne
101
+ if total_images > 0:
102
+ average_persons = total_persons / total_images
103
+ st.write(f"**Moyenne des personnes détectées sur toutes les images : {average_persons:.2f}**")
104
 
105
+ # Générer un e-mail avec Gemini basé sur la moyenne
106
+ prompt = f"Génère moi un mail destiné à l'attaché de promotion d'une école, pour lui signaler qu'en moyenne, {average_persons:.2f} élèves ont été détectés dans les images de la classe 'ESGI 2'."
107
+ api_key = "AIzaSyCJVUr-76I4TL42X98d9U0THbRD3MKlB38" # Clé d'API
 
 
108
 
109
+ email_text = generate_text_with_gemini(api_key, prompt)
110
+ st.write("**E-mail généré :**")
111
+ st.write(email_text)