hoololi commited on
Commit
b6656b0
·
verified ·
1 Parent(s): 73c7ee5

Upload app.py

Browse files
Files changed (1) hide show
  1. app.py +29 -9
app.py CHANGED
@@ -37,11 +37,24 @@ def load_detector(model_name):
37
  @spaces.GPU
38
  def process_webcam(image, model_choice, confidence_threshold):
39
  """Traite l'image de la webcam"""
40
- print(f"🎥 Frame reçue - Type: {type(image)}")
41
 
42
  if image is None:
43
- print("❌ Image None reçue")
44
- return None
 
 
 
 
 
 
 
 
 
 
 
 
 
45
 
46
  try:
47
  # S'assurer qu'on a une image PIL
@@ -138,23 +151,30 @@ def draw_detections(image, detections):
138
 
139
  return img_copy
140
 
141
- # Interface simplifiée au maximum
142
  demo = gr.Interface(
143
  fn=process_webcam,
144
  inputs=[
145
- gr.Image(sources=["webcam"], streaming=True, type="pil"),
 
 
 
 
 
 
146
  gr.Dropdown(
147
  choices=list(REALTIME_MODELS.keys()),
148
  value="YOLOS Tiny (ultra-rapide)",
149
  label="Modèle"
150
  ),
151
- gr.Slider(0.1, 1.0, 0.3, step=0.1, label="Confiance")
152
  ],
153
- outputs=gr.Image(streaming=True, type="pil"),
154
  live=True,
155
  title="🎥 Détection Live",
156
- description="Autorisez la webcam pour voir la détection d'objets en temps réel",
157
- allow_flagging="never"
 
158
  )
159
 
160
  if __name__ == "__main__":
 
37
  @spaces.GPU
38
  def process_webcam(image, model_choice, confidence_threshold):
39
  """Traite l'image de la webcam"""
40
+ print(f"🎥 Frame reçue - Type: {type(image)}, Shape: {getattr(image, 'size', 'N/A')}")
41
 
42
  if image is None:
43
+ print("❌ Image None reçue - webcam pas encore initialisée")
44
+ # Retourner une image d'attente
45
+ waiting_img = Image.new('RGB', (640, 480), color='#1f2937')
46
+ draw = ImageDraw.Draw(waiting_img)
47
+ try:
48
+ font = ImageFont.truetype("/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf", 32)
49
+ except:
50
+ font = ImageFont.load_default()
51
+
52
+ text = "🎥 En attente de la webcam..."
53
+ bbox = draw.textbbox((0, 0), text, font=font)
54
+ x = (640 - bbox[2]) // 2
55
+ y = (480 - bbox[3]) // 2
56
+ draw.text((x, y), text, fill='white', font=font)
57
+ return waiting_img
58
 
59
  try:
60
  # S'assurer qu'on a une image PIL
 
151
 
152
  return img_copy
153
 
154
+ # Interface avec configuration webcam améliorée
155
  demo = gr.Interface(
156
  fn=process_webcam,
157
  inputs=[
158
+ gr.Image(
159
+ sources=["webcam"],
160
+ streaming=True,
161
+ type="pil",
162
+ mirror_webcam=False,
163
+ show_download_button=False
164
+ ),
165
  gr.Dropdown(
166
  choices=list(REALTIME_MODELS.keys()),
167
  value="YOLOS Tiny (ultra-rapide)",
168
  label="Modèle"
169
  ),
170
+ gr.Slider(0.1, 1.0, 0.1, step=0.1, label="Confiance")
171
  ],
172
+ outputs=gr.Image(streaming=True, type="pil", show_download_button=False),
173
  live=True,
174
  title="🎥 Détection Live",
175
+ description="⚠️ Cliquez sur l'icône webcam et autorisez l'accès pour commencer",
176
+ allow_flagging="never",
177
+ flagging_mode="never"
178
  )
179
 
180
  if __name__ == "__main__":