📡 旷视五接口 — 前端接入说明

Base URL: https://hair.xiangsilian.com  |  在线文档: /docs  |  在线测试页见底部

通用约定 接口1 接口2 接口3 接口4 接口5 接口6 接口7 错误码 在线测试

🔧 通用约定

协议HTTPS
请求方式全部 POST
编码UTF-8
Content-Typemultipart/form-data
图片参数三选一:image_file(文件上传)/ image_url(URL)/ image_base64(base64 + 前缀)
图片格式JPG / PNG,≤ 1 MB,单人正面照

统一响应结构

{
  "code": 0,           // 0=成功,非0=错误
  "message": "success",
  "request_id": "...",  // 请求追踪 ID
  "data": { ... }       // 业务数据,各接口不同
}

1. 四庭七眼测量  POST  /api/v1/face/measure

上传正面照 → 返回标注好的 PNG(仅标注图层,透明底)+ 四庭七眼厘米数值 + 关键点像素坐标。

入参

参数类型必填说明
image_filefile三选一上传图片文件
image_urlstring三选一图片 URL
image_base64string三选一base64 字符串,需带 data:image/...;base64, 前缀

data 字段

字段类型说明
annotated_image_urlstring标注 PNG URL(仅标注图层,透明底,叠加到原图上显示)
face_total_height_cmnumber全脸高度(cm)
four_courtsobject四庭:top/upper/middle/lower,各含 _cm 和 ratios
seven_eyesobject七眼:eye_width/face_width/inter_eye_distance,各含 _cm 和 ratios
landmarksobject5 个关键点像素坐标:hair_top/hairline/brow_center/nose_bottom/chin_tip

💡 前端把标注图叠加到原图上即可呈现测量效果(标注图白色线条 #FFFFFF,透明底)。

请求示例(fetch):

const fd = new FormData();
fd.append('image_file', file);  // 或 image_url / image_base64

const res = await fetch('https://hair.xiangsilian.com/api/v1/face/measure', {
  method: 'POST',
  body: fd
});
const { code, data } = await res.json();
// data.annotated_image_url  →  标注 PNG
// data.face_total_height_cm  →  全脸高度
// data.four_courts.ratios    →  { top_court: 0.25, ... }
// 前端叠加显示:原图 + annotated_image_url(absolute 叠加)

2. C端生发  POST  /api/v1/hair/grow

上传正面照 + 性别 + 发型序号 → 返回指定发际线类型的预览图与生发图。

入参

参数类型必填说明
image_file / image_url / image_base64三选一用户正面照
genderstring✅ 必填"male" / "female"
hair_styleint✅ 必填发型序号。female: 1~5,male: 1~4(见下方映射)

data.results[] 元素

字段类型说明
image_urlstring发际线叠加预览图(曲线叠在原图上)
grown_image_urlstring生发后效果图(ComfyUI/Flux「植发3个月」)⚠ 可空
hairline_typestring发际线类型 key
orderint排序(1=最佳,当前按贴图顺序)

Female 5 种:ellipse/flower/heart/straight/wave  |  Male 4 种:ellipse/m/straight/inverse_arc
⚠ 生发图由本机 ComfyUI 生成,耗时可达数分钟,fetch 超时需放大(≥5min)。

3. B端生发(医生端) POST  /api/v1/hair/grow-b

医生用马克笔在用户照片额头画线 → 拍照上传 → 系统生成生发效果图。

入参

参数类型必填说明
marked_image_file / marked_image_url / marked_image_base64✅ 三选一已用马克笔标注发际线的图片

data 字段

字段类型说明
hair_growth_image_urlstring生发后效果图 URL ⚠ 可空
hairline_typestring固定 "custom"(手绘定制)

⚠ 划线图未检测到划线(或无人脸)→ code=1001

4. 用户特征分析  POST  /api/v1/face/features

上传照片 → 火山方舟豆包视觉模型分析 → 返回几十项面部特征(脸型/眉形/肤色/四季色彩…)。

入参:image_file / image_url / image_base64 三选一。无其他参数。

data 字段

字段类型说明
featuresstringJSON 字符串(不是对象!客户端需 JSON.parse()

features 英文优先字段(其余中文字段同时返回,共~42个):

字段说明字段说明
face_shape脸型eyebrow_shape眉形
facial_age面部年龄区间gender性别
dynamic_static_type动静类型gene_style基因风格
const res = await fetch('https://hair.xiangsilian.com/api/v1/face/features', {
  method: 'POST',
  body: fd
});
const { code, data } = await res.json();
const features = JSON.parse(data.features);  // ← 注意:data.features 是字符串!
console.log(features.face_shape);   // "鹅蛋脸"
console.log(features['四季色彩季型']); // "冷夏型"(中文字段也保留)

5. 发际线 PNG 生成  POST  /api/v1/hairline/generate

上传正面照 + 性别 → N 张发际线叠加图 + 最佳发际线中心点坐标。

入参

参数类型必填说明
image_file / image_url / image_base64三选一用户正面照
genderstring✅ 必填"male" / "female"

data 字段

字段类型说明
hairline_images[]object[]发际线叠加图列表,每项含 image_url + order
best_hairline_center_pointobject最佳发际线中心点像素坐标 { x: number, y: number }

6. 四庭七眼测量 v2  POST  /api/v1/face/measure-v2  v2

基于接口1的变体。上传正面照 → 返回标注 PNG + 三庭七眼数据。与接口1 的差异:

  • 去顶庭:不画头顶横线、不返回顶庭数据,face_total_height_cm = 上+中+下庭
  • 竖线范围:发际线→下巴尖(接口1 为头顶→下巴尖)
  • 无头部端线:仅七眼 6 点 5 段标尺(接口1 为 8 点 7 段)

入参

参数类型必填说明
image_file / image_url / image_base64三选一用户正面照

data 字段

字段类型说明
annotated_image_urlstring标注 PNG URL(仅标注图层,透明底)
face_total_height_cmnumber面部总高度(cm)= 三庭之和
four_courtsobject三庭:upper/middle/lower,各含 _cm 和 ratios(无 top_court
seven_eyesobject七眼:eye_width/face_width/inter_eye_distance
landmarksobject4 个关键点:hairline/brow_center/nose_bottom/chin_tip(无 hair_top

7. C端生发 v2  POST  /api/v1/hair/grow-v2  v2

功能与接口2完全一致,仅 ComfyUI 工作流不同——使用 add_hair2.json 替代 add_hair.json(Flux-2 Klein 9b)。

入参

参数类型必填说明
image_file / image_url / image_base64三选一用户正面照
genderstring✅ 必填"male" / "female"
hair_styleint✅ 必填发型序号。female: 1~5,male: 1~4

data.results[] 元素(同接口2)

字段类型说明
image_urlstring发际线叠加预览图
grown_image_urlstring生发后效果图 ⚠ 可空
hairline_typestring发际线类型 key
orderint排序

Female 5 种:ellipse/flower/heart/straight/wave  |  Male 4 种:ellipse/m/straight/inverse_arc
⚠ 工作流: add_hair2.json(Flux-2 Klein 9b),输入节点 26,输出节点 75。

⚠ 错误码

codemessage说明
1001无法识别人像未检测到人脸
1002人像分辨率过低低于最低分辨率
1003角度问题,非正面照非正面 / 角度过大
1005检测到多张人脸仅支持单人
1006文件超出大小限制单文件 > 1 MB
1007图片参数错误 / 后端不可用参数传错 / 服务繁忙请稍后重试
1008图片格式不支持非 JPG/PNG / base64 解码失败

1004 已废弃(接口2 不再自动判性别,改由客户端传 gender 参数)。

🧪 在线测试页面

接口测试页功能
1. 四庭七眼/static/test_interface1.html上传照片 → 原图+标注叠加,底图/标注开关,指标卡片
2. C端生发/static/test_interface2.html上传+性别 → 方案一覧(原图/叠加/生发),双图对比
3. B端生发/static/test_interface3.html划线图上传 → 生发效果图
4. 用户特征/static/test_interface4.html上传照片 → 42项面部特征表格 + 原始JSON
5. 发际线PNG/static/test_interface5.html上传+性别 → 发际线方案+中心点坐标
6. 四庭七眼 v2/static/test_interface6.html同接口1,去顶庭 · 竖线发际线→下巴 · 无头部端线
7. C端生发 v2/static/test_interface7.html同接口2,使用 add_hair2.json 工作流(Flux-2 Klein 9b)

完整 API 文档:/docs(Swagger UI)

Base: https://hair.xiangsilian.com  |  Swagger: /docs  |  接入说明: /static/integration.html