phase cv 0
This commit is contained in:
@@ -16,7 +16,7 @@ import numpy as np
|
||||
import requests
|
||||
from PIL import Image
|
||||
|
||||
from .types import DetectResult, OCRResult, ServerStatus, VLMResult
|
||||
from .types import DetectResult, OCRResult, RegionDebugResult, RegionResult, ServerStatus, VLMResult
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
@@ -145,6 +145,92 @@ class InferenceClient:
|
||||
reasoning=data.get("reasoning", ""),
|
||||
)
|
||||
|
||||
def detect_edges(
|
||||
self,
|
||||
image: np.ndarray,
|
||||
edge_canny_low: int = 50,
|
||||
edge_canny_high: int = 150,
|
||||
edge_hough_threshold: int = 80,
|
||||
edge_hough_min_length: int = 100,
|
||||
edge_hough_max_gap: int = 10,
|
||||
edge_pair_max_distance: int = 200,
|
||||
edge_pair_min_distance: int = 15,
|
||||
) -> list[RegionResult]:
|
||||
"""Run edge detection on an image."""
|
||||
payload = {
|
||||
"image": _encode_image(image),
|
||||
"edge_canny_low": edge_canny_low,
|
||||
"edge_canny_high": edge_canny_high,
|
||||
"edge_hough_threshold": edge_hough_threshold,
|
||||
"edge_hough_min_length": edge_hough_min_length,
|
||||
"edge_hough_max_gap": edge_hough_max_gap,
|
||||
"edge_pair_max_distance": edge_pair_max_distance,
|
||||
"edge_pair_min_distance": edge_pair_min_distance,
|
||||
}
|
||||
|
||||
resp = self.session.post(
|
||||
f"{self.base_url}/detect_edges",
|
||||
json=payload,
|
||||
timeout=self.timeout,
|
||||
)
|
||||
resp.raise_for_status()
|
||||
|
||||
results = []
|
||||
for r in resp.json().get("regions", []):
|
||||
result = RegionResult(
|
||||
x=r["x"], y=r["y"], w=r["w"], h=r["h"],
|
||||
confidence=r["confidence"], label=r["label"],
|
||||
)
|
||||
results.append(result)
|
||||
return results
|
||||
|
||||
def detect_edges_debug(
|
||||
self,
|
||||
image: np.ndarray,
|
||||
edge_canny_low: int = 50,
|
||||
edge_canny_high: int = 150,
|
||||
edge_hough_threshold: int = 80,
|
||||
edge_hough_min_length: int = 100,
|
||||
edge_hough_max_gap: int = 10,
|
||||
edge_pair_max_distance: int = 200,
|
||||
edge_pair_min_distance: int = 15,
|
||||
) -> RegionDebugResult:
|
||||
"""Run edge detection with debug overlays."""
|
||||
payload = {
|
||||
"image": _encode_image(image),
|
||||
"edge_canny_low": edge_canny_low,
|
||||
"edge_canny_high": edge_canny_high,
|
||||
"edge_hough_threshold": edge_hough_threshold,
|
||||
"edge_hough_min_length": edge_hough_min_length,
|
||||
"edge_hough_max_gap": edge_hough_max_gap,
|
||||
"edge_pair_max_distance": edge_pair_max_distance,
|
||||
"edge_pair_min_distance": edge_pair_min_distance,
|
||||
}
|
||||
|
||||
resp = self.session.post(
|
||||
f"{self.base_url}/detect_edges/debug",
|
||||
json=payload,
|
||||
timeout=self.timeout,
|
||||
)
|
||||
resp.raise_for_status()
|
||||
|
||||
data = resp.json()
|
||||
regions = []
|
||||
for r in data.get("regions", []):
|
||||
region = RegionResult(
|
||||
x=r["x"], y=r["y"], w=r["w"], h=r["h"],
|
||||
confidence=r["confidence"], label=r["label"],
|
||||
)
|
||||
regions.append(region)
|
||||
|
||||
return RegionDebugResult(
|
||||
regions=regions,
|
||||
edge_overlay_b64=data.get("edge_overlay_b64", ""),
|
||||
lines_overlay_b64=data.get("lines_overlay_b64", ""),
|
||||
horizontal_count=data.get("horizontal_count", 0),
|
||||
pair_count=data.get("pair_count", 0),
|
||||
)
|
||||
|
||||
def load_model(self, model: str, quantization: str = "fp16") -> None:
|
||||
"""Request the server to load a model into VRAM."""
|
||||
self.session.post(
|
||||
|
||||
Reference in New Issue
Block a user