Spaces:
Sleeping
Sleeping
| import os | |
| import sys | |
| import json | |
| from datetime import datetime | |
| from PIL import Image, ImageDraw, ImageFont # Para dibujar las cajas | |
| colors = [ | |
| 'blue', | |
| 'green', | |
| 'purple', | |
| 'red', | |
| 'black', | |
| ] | |
| values = { | |
| # USD | |
| 'fifty-back' : '50f-usd', 'fifty-front' : '50f-usd', | |
| 'five-back' : '5b-usd', 'five-front' : '5f-usd', | |
| 'one-back' : '1b-usd', 'one-front' : '1f-usd', | |
| 'ten-back' : '10b-usd', 'ten-front' : '10f-usd', | |
| 'twenty-back' : '20b-usd', 'twenty-front' : '20f-usd', | |
| 'one_hundred-back' : '100b-usd', 'one_hundred-front' : '100f-usd', | |
| # VEF | |
| 'fifty-back-vef' : '50f-vef', 'fifty-front-vef' : '50f-vef', | |
| 'five-back-vef' : '5b-vef', 'five-front-vef' : '5f-vef', | |
| 'ten-back-vef' : '10b-vef', 'ten-front-vef' : '10f-vef', | |
| 'twenty-back-vef' : '20b-vef', 'twenty-front-vef' : '20f-vef', | |
| 'one_hundred-back-vef' : '100b-vef', 'one_hundred-front-vef' : '100f-vef', | |
| 'two_hundred-back-vef' : '100b-vef', 'two_hundred-front-vef' : '100f-vef', | |
| } | |
| async def log(path, boxes, image): | |
| if not os.path.exists(path): | |
| os.makedirs(path) | |
| file_name = datetime.now().strftime("%d-%m-%y_%H_%M_%S") | |
| value = values[boxes[0]["label"]] # Valor pasado por el diccionario | |
| orign_image_output_path = f"{path}{value}_{file_name}_orign.jpg" | |
| boxes_image_output_path = f"{path}{value}_{file_name}_boxes.jpg" | |
| text_output_path = f"{path}{value}_{file_name}_json.txt" | |
| try: | |
| # Guardar Original | |
| image.save(orign_image_output_path) | |
| # Guardar texto | |
| with open(text_output_path, "w") as text_file: | |
| text_file.write(json.dumps(boxes, indent=4)) | |
| # Guardar Boxes | |
| draw = ImageDraw.Draw(image) | |
| font = ImageFont.load_default() | |
| for detection, color in zip(boxes, colors): | |
| bbox = detection["bbox"][0] # Extraer la caja delimitadora | |
| draw.rectangle(bbox, outline=color, width=3) # Dibujar un rectángulo | |
| label = f'{detection["label"]} | {float(detection["confidence"]):.4f}' # Extraer la etiqueta | |
| text_position = (bbox[0], bbox[1] - 10) | |
| text_bg_position = (bbox[0], bbox[1] - 10, bbox[2], bbox[1]) # Fondo del texto | |
| draw.rectangle(text_bg_position, fill=color) # Fondo rojo | |
| draw.text(text_position, label, fill="white", font=font) # Texto blanco | |
| image.save(boxes_image_output_path) | |
| except Exception as e: | |
| print(f"Error al guardar el log: {e}") | |
| return | |