Hay alguna forma de hacer que imprima una sola vez lo que ve en vez de hacer un loop? Quiero que avise una sola vez si por ejemplo detecta a una persona como para que sirva de alerta ya que quiero ponerle la alerta con un messagebox y no quiero que spamee
digo por esta parte del codigo:
for detection in detections:
if detection is not None:
detection = rescale_boxes(detection, opt.img_size, RGBimg.shape[:2])
for x1, y1, x2, y2, conf, cls_conf, cls_pred in detection:
box_w = x2 - x1
box_h = y2 - y1
color = [int(c) for c in colors[int(cls_pred)]]
print("Se detectó {}".format(classes[int(cls_pred)]))
frame = cv2.rectangle(frame, (x1, y1 + box_h), (x2, y1), color, 5)
cv2.putText(frame, classes[int(cls_pred)], (x1, y1), cv2.FONT_HERSHEY_SIMPLEX, 1, color, 5) # Nombre de la clase detectada
cv2.putText(frame, str("%.2f" % float(conf)), (x2, y2 - box_h), cv2.FONT_HERSHEY_SIMPLEX, 0.5,color, 5) # Certeza de prediccion de la clase
Hay alguna forma de hacer que imprima una sola vez lo que ve en vez de hacer un loop? Quiero que avise una sola vez si por ejemplo detecta a una persona como para que sirva de alerta ya que quiero ponerle la alerta con un messagebox y no quiero que spamee digo por esta parte del codigo: for detection in detections: if detection is not None: detection = rescale_boxes(detection, opt.img_size, RGBimg.shape[:2]) for x1, y1, x2, y2, conf, cls_conf, cls_pred in detection: box_w = x2 - x1 box_h = y2 - y1
color = [int(c) for c in colors[int(cls_pred)]] print("Se detectó {}".format(classes[int(cls_pred)])) frame = cv2.rectangle(frame, (x1, y1 + box_h), (x2, y1), color, 5) cv2.putText(frame, classes[int(cls_pred)], (x1, y1), cv2.FONT_HERSHEY_SIMPLEX, 1, color, 5) # Nombre de la clase detectada cv2.putText(frame, str("%.2f" % float(conf)), (x2, y2 - box_h), cv2.FONT_HERSHEY_SIMPLEX, 0.5,color, 5) # Certeza de prediccion de la clase