DavidNgoue commited on
Commit
43dda14
·
verified ·
1 Parent(s): d63a8cc

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +48 -6
app.py CHANGED
@@ -35,7 +35,6 @@ def generate_qrcode(link):
35
  qr.make(fit=True)
36
  qr_image = qr.make_image(fill_color="black", back_color="white")
37
 
38
- # Réduire la taille tout en maintenant la lisibilité (ex: 100x100 pixels)
39
  small_qr_image = qr_image.resize((100, 100), Image.Resampling.LANCZOS)
40
 
41
  buffer = BytesIO()
@@ -48,7 +47,6 @@ def main():
48
  st.set_page_config(page_title="Application de Vision par Ordinateur", layout="wide")
49
  st.title("Application de Vision par Ordinateur")
50
 
51
- # Section pour le choix de l'image par défaut
52
  st.sidebar.header("Chargement de l'image")
53
  if "default_image" not in st.session_state:
54
  st.session_state["default_image"] = None
@@ -63,7 +61,6 @@ def main():
63
  st.sidebar.warning("Veuillez charger une image pour commencer.")
64
  return
65
 
66
- # Menu des fonctionnalités
67
  st.sidebar.header("Fonctionnalités")
68
  menu_option = st.sidebar.selectbox("Choisissez une fonctionnalité", [
69
  "Accueil",
@@ -72,7 +69,8 @@ def main():
72
  "Rotation",
73
  "Floutage",
74
  "Contours",
75
- "Génération de Code-barres et QR Code"
 
76
  ])
77
 
78
  image_np = st.session_state["default_image"]
@@ -152,15 +150,59 @@ def main():
152
  link = st.text_input("Entre un lien ou un texte pour générer le code-barres et le QR code")
153
  if st.button("Générer"):
154
  if link:
155
- # Génération du Code-barres
156
  barcode_image = generate_barcode(link)
157
  st.image(barcode_image, caption="Code-barres généré", use_container_width=True)
158
 
159
- # Génération du QR code
160
  qrcode_image = generate_qrcode(link)
161
  st.image(qrcode_image, caption="QR Code généré", use_container_width=True)
162
  else:
163
  st.error("Veuillez entrer un lien valide pour générer les codes.")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
164
 
165
 
166
  if __name__ == "__main__":
 
35
  qr.make(fit=True)
36
  qr_image = qr.make_image(fill_color="black", back_color="white")
37
 
 
38
  small_qr_image = qr_image.resize((100, 100), Image.Resampling.LANCZOS)
39
 
40
  buffer = BytesIO()
 
47
  st.set_page_config(page_title="Application de Vision par Ordinateur", layout="wide")
48
  st.title("Application de Vision par Ordinateur")
49
 
 
50
  st.sidebar.header("Chargement de l'image")
51
  if "default_image" not in st.session_state:
52
  st.session_state["default_image"] = None
 
61
  st.sidebar.warning("Veuillez charger une image pour commencer.")
62
  return
63
 
 
64
  st.sidebar.header("Fonctionnalités")
65
  menu_option = st.sidebar.selectbox("Choisissez une fonctionnalité", [
66
  "Accueil",
 
69
  "Rotation",
70
  "Floutage",
71
  "Contours",
72
+ "Génération de Code-barres et QR Code",
73
+ "Détection Faciale"
74
  ])
75
 
76
  image_np = st.session_state["default_image"]
 
150
  link = st.text_input("Entre un lien ou un texte pour générer le code-barres et le QR code")
151
  if st.button("Générer"):
152
  if link:
 
153
  barcode_image = generate_barcode(link)
154
  st.image(barcode_image, caption="Code-barres généré", use_container_width=True)
155
 
 
156
  qrcode_image = generate_qrcode(link)
157
  st.image(qrcode_image, caption="QR Code généré", use_container_width=True)
158
  else:
159
  st.error("Veuillez entrer un lien valide pour générer les codes.")
160
+
161
+ elif menu_option == "Détection Faciale":
162
+ st.subheader("Détection Faciale")
163
+
164
+ # Charger le modèle Haarcascade pour la détection des visages
165
+ face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + "haarcascade_frontalface_default.xml")
166
+
167
+ # Bouton pour démarrer la détection des visages
168
+ if st.button("Lancer la détection des visages"):
169
+
170
+ # Initialiser la webcam
171
+ cap = cv2.VideoCapture(0) # 0 pour la webcam par défaut
172
+
173
+ if not cap.isOpened():
174
+ st.error("Impossible d'accéder à la webcam.")
175
+ else:
176
+ st.info("Appuyez sur Ctrl+C pour arrêter la détection.")
177
+
178
+ # Flux vidéo en temps réel
179
+ frame_placeholder = st.empty()
180
+
181
+ while True:
182
+ ret, frame = cap.read()
183
+ if not ret:
184
+ st.error("Erreur lors de la capture vidéo.")
185
+ break
186
+
187
+ # Convertir en niveaux de gris
188
+ gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
189
+
190
+ # Détecter les visages
191
+ faces = face_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30))
192
+
193
+ # Dessiner des rectangles autour des visages détectés
194
+ for (x, y, w, h) in faces:
195
+ cv2.rectangle(frame, (x, y), (x + w, y + h), (255, 0, 0), 2)
196
+
197
+ # Convertir l'image pour Streamlit
198
+ frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
199
+
200
+ # Afficher l'image dans l'interface Streamlit
201
+ frame_placeholder.image(frame, channels="RGB", use_container_width=True)
202
+
203
+ # Libérer la webcam une fois le flux terminé
204
+ cap.release()
205
+
206
 
207
 
208
  if __name__ == "__main__":