mrisdi's picture
Upload 4 files
dc4d49b verified
from fastapi import FastAPI, File, UploadFile
from fastapi.middleware.cors import CORSMiddleware
from pydantic import BaseModel
import numpy as np
import cv2
from ultralytics import YOLO
from PIL import Image
import base64
from io import BytesIO
app = FastAPI()
model = YOLO("yolov8n.pt")
origins = ["*"]
app.add_middleware(
CORSMiddleware,
allow_origins=origins,
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
@app.post("/detect/")
async def detect_objects(file: UploadFile):
# Process the uploaded image for object detection
image_bytes = await file.read()
image = np.frombuffer(image_bytes, dtype=np.uint8)
image = cv2.imdecode(image, cv2.IMREAD_COLOR)
# Perform object detection with YOLOv8
detections = model(image)
return detections[0].tojson()
class ImageData(BaseModel):
image: str # Data gambar dalam format base64
@app.post("/uploadimage")
async def upload_image(image_data: ImageData):
# Mengonversi base64 ke gambar
base64_data = image_data.image.split(',')[1]
image = Image.open(BytesIO(base64.b64decode(base64_data)))
detections = model(image)
return detections[0].tojson()