PachecoT's picture
Upload app.py
fc754ef verified
from fastapi import FastAPI, File, UploadFile, HTTPException
from fastapi.responses import HTMLResponse
from pydantic import BaseModel
from typing import List
import cv2
from PIL import Image
import numpy as np
from io import BytesIO
import mediapipe as mp
app = FastAPI()
# Initialize MediaPipe Face Detection
mp_face_detection = mp.solutions.face_detection
face_detection = mp_face_detection.FaceDetection(min_detection_confidence=0.5)
def buscar_existe(image):
# Convert the image to RGB (MediaPipe requires RGB input)
image_rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
# Process the image
results = face_detection.process(image_rgb)
# Check if any faces were detected
if results.detections:
return "si"
else:
return "no"
# Ruta de predicción
@app.post('/predict/')
async def predict(file: UploadFile = File(...)):
try:
# Read the file
contents = await file.read()
image = Image.open(BytesIO(contents))
# Convert PIL Image to numpy array
image_np = np.array(image)
# If the image is RGB, convert to BGR (OpenCV uses BGR)
if image_np.shape[-1] == 3:
image_np = cv2.cvtColor(image_np, cv2.COLOR_RGB2BGR)
# Perform face detection
prediction = buscar_existe(image_np)
return {"prediction": prediction}
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))
@app.get("/")
async def root():
return {"message": "Face Detection API is running"}