XY Image Preprocess Service v0.1.0

图像预处理服务 - 下载图像并返回几何分析结果,用于下游 LLM 规划

📋 API 端点

GET /healthz

健康检查接口,用于监控服务状态

响应示例:
{"status": "ok"}

POST /image/preprocess

图像预处理分析 - 分析图像中的颜色组和几何形状

请求参数:
字段类型必填说明
image_urlstring需要分析的图像 URL
请求示例:
{
    "image_url": "https://example.com/image.png"
}
响应字段:
字段类型说明
successboolean是否成功
image_metaobject图像元信息
  └─ source_urlstring图像来源 URL
  └─ width_pxinteger图像宽度(像素)
  └─ height_pxinteger图像高度(像素)
  └─ color_modestring颜色模式(如 RGB/RGBA)
  └─ mime_typestringMIME 类型
connectivityinteger连通区域数量
color_group_countinteger颜色组数量
color_groupsarray[object]颜色组详细信息列表
  └─ group_idinteger颜色组 ID
  └─ rgbobjectRGB 颜色值
    └─ rinteger红色通道 (0-255)
    └─ ginteger绿色通道 (0-255)
    └─ binteger蓝色通道 (0-255)
  └─ pixel_countinteger像素数量
  └─ percentagefloat占比百分比
  └─ center_pxobject中心点坐标
    └─ xfloatX 坐标
    └─ yfloatY 坐标
  └─ radius_pxfloat半径(像素)
  └─ bboxobject边界框
    └─ leftinteger左边界
    └─ topinteger上边界
    └─ rightinteger右边界
    └─ bottominteger下边界
    └─ widthinteger宽度
    └─ heightinteger高度
  └─ is_backgroundboolean是否为背景
  └─ source_typestring源类型
  └─ geometryobject|null几何信息(根据类型不同字段不同)
    └─ typestring几何类型 (circle/rectangle/line/polyline)
    └─ centerobject|null中心点 {x, y}
    └─ radius_pxfloat|null半径(圆形)
    └─ width_pxfloat|null宽度(矩形)
    └─ height_pxfloat|null高度(矩形)
    └─ length_pxfloat|null长度(线段)
    └─ thickness_pxfloat|null粗细(线段)
    └─ endpoint_1object|null端点1 {x, y}
    └─ endpoint_2object|null端点2 {x, y}
    └─ cornersarray[object]|null角点列表 [{x, y}]
    └─ polyline_pointsarray[object]|null折线点列表 [{x, y}]
notesarray[string]处理备注字符串列表
响应示例:
{
    "success": true,
    "image_meta": {
        "source_url": "https://example.com/image.png",
        "width_px": 800,
        "height_px": 600,
        "color_mode": "RGB",
        "mime_type": "image/png"
    },
    "connectivity": 5,
    "color_group_count": 3,
    "color_groups": [
        {
            "group_id": 0,
            "rgb": {"r": 255, "g": 0, "b": 0},
            "pixel_count": 12500,
            "percentage": 15.5,
            "center_px": {"x": 400.5, "y": 300.2},
            "radius_px": 45.3,
            "bbox": {"left": 100, "top": 50, "right": 200, "bottom": 150, "width": 100, "height": 100},
            "is_background": false,
            "source_type": "circle",
            "geometry": {
                "type": "circle",
                "center": {"x": 400.5, "y": 300.2},
                "radius_px": 45.3
            }
        }
    ],
    "notes": ["自动检测背景颜色", "发现 5 个连通区域"]
}

POST /render/path

渲染路径图像 - 在背景图上绘制航点路径

请求参数:
字段类型必填说明
image_urlstring背景图像 URL
waypointsarray[object]航点列表 [{x, y, role}]
titlestring图像标题
coordinate_conversionobject坐标转换配置
请求示例:
{
    "image_url": "https://example.com/map.png",
    "waypoints": [
        {"x": 100, "y": 200, "role": "start"},
        {"x": 300, "y": 400, "role": "end"}
    ],
    "title": "路径规划"
}
响应字段:
字段类型说明
successboolean是否成功
image_urlstring渲染后的图像 URL(可直接访问)
image_pathstring图像在服务器上的本地路径
csv_urlstring|null航点 CSV 文件 URL
csv_pathstring|nullCSV 文件本地路径
markdown_tablestring|null航点 Markdown 表格字符串
cached_sourceboolean|null是否使用了缓存的源图像
converted_waypointsarray[object]|null坐标转换后的航点列表
  └─ rolestring航点角色
  └─ realobject实际坐标
    └─ xfloatX 坐标(实际单位)
    └─ yfloatY 坐标(实际单位)
conversion_unitstring|null坐标单位(如 mm/cm/m)
响应示例:
{
    "success": true,
    "image_url": "http://localhost:18765/tmp/path_123456.png?v=20240101120000",
    "image_path": "/app/tmp/path_123456.png",
    "csv_url": "http://localhost:18765/tmp/waypoints_123456.csv?v=20240101120000",
    "csv_path": "/app/tmp/waypoints_123456.csv",
    "markdown_table": "| Role | X | Y |\n|------|---|---|\n| start | 100 | 200 |",
    "cached_source": false,
    "converted_waypoints": [
        {"role": "start", "real": {"x": 10.5, "y": 20.3}},
        {"role": "end", "real": {"x": 45.2, "y": 60.8}}
    ],
    "conversion_unit": "mm"
}

💡 使用示例

图像预处理

curl -X POST http://localhost:18765/image/preprocess \
    -H "Content-Type: application/json" \
    -d '{"image_url": "https://example.com/image.png"}'

渲染路径

curl -X POST http://localhost:18765/render/path \
    -H "Content-Type: application/json" \
    -d '{
        "image_url": "https://example.com/map.png",
        "waypoints": [
            {"x": 100, "y": 200, "role": "start"},
            {"x": 300, "y": 400, "role": "end"}
        ]
    }'