image-matching-webui / api /__init__.py
Realcat
add: ray dashboard port and serve port
aebdae7
raw
history blame
1.17 kB
import sys
from typing import List
from pydantic import BaseModel
import base64
import io
import numpy as np
from fastapi.exceptions import HTTPException
from PIL import Image
from pathlib import Path
sys.path.append(str(Path(__file__).parents[1]))
from hloc import logger
class ImagesInput(BaseModel):
data: List[str] = []
max_keypoints: List[int] = []
timestamps: List[str] = []
grayscale: bool = False
image_hw: List[List[int]] = [[], []]
feature_type: int = 0
rotates: List[float] = []
scales: List[float] = []
reference_points: List[List[float]] = []
binarize: bool = False
def decode_base64_to_image(encoding):
if encoding.startswith("data:image/"):
encoding = encoding.split(";")[1].split(",")[1]
try:
image = Image.open(io.BytesIO(base64.b64decode(encoding)))
return image
except Exception as e:
logger.warning(f"API cannot decode image: {e}")
raise HTTPException(
status_code=500, detail="Invalid encoded image"
) from e
def to_base64_nparray(encoding: str) -> np.ndarray:
return np.array(decode_base64_to_image(encoding)).astype("uint8")