midas / app.py
adpro's picture
Update app.py
f6e7520 verified
raw
history blame
1.02 kB
from fastapi import FastAPI, File, UploadFile
import io
import numpy as np
from PIL import Image
import uvicorn
import cv2
app = FastAPI()
@app.post("/analyze_path/")
async def analyze_path(file: UploadFile = File(...)):
image_bytes = await file.read()
image = Image.open(io.BytesIO(image_bytes)).convert("L") # Chuyển ảnh sang grayscale
depth_map = np.array(image)
flipped_depth_map = cv2.flip(depth_map, -1)
# Phân tích ảnh Depth Map
command = detect_path(flipped_depth_map)
return {"command": command}
def detect_path(depth_map):
_, thresh = cv2.threshold(depth_map, 200, 255, cv2.THRESH_BINARY)
contours, _ = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
if len(contours) == 0:
return "forward"
left_region = np.mean(depth_map[:, :depth_map.shape[1]//3])
right_region = np.mean(depth_map[:, 2*depth_map.shape[1]//3:])
if left_region > right_region:
return "left"
else:
return "right"