使用标记数据
此模块包内含一个单独的组件dpa.DashPictureAnnotation
。要使用该组件,可以从以下最小范例入手:
import dash
from dash import html
import dash_picture_annotation as dpa
app = dash.Dash()
app.layout = html.Div(
(
dpa.DashPictureAnnotation(
id="annotator",
data=None,
image="/site-address/to/an/image",
),
)
)
此处,令data
初始化为None
,从而在组件加载的时候,不设置任何标记。
用户可以透过以下方式和标记器交互:
- 拖拽创建标记标记框;
- 选中某个标记框,并为其设置文字标注(comment);
- 选中某个标记框,修改其大小或位置;
- 删除某个标记框。
捕获标记数据的更新
每当鼠标松开时,标记数据就会更新。该更新会触发一个dash callback。使用以下代码来捕获该callback。
app.layout = html.Div(
(
dpa.DashPictureAnnotation(id="annotator", ...),
html.Div(id="output"),
)
)
@app.callback(
Output("output", "children"), Input("annotator", "data"), prevent_initial_call=False
)
def get_annotation(data: dpa.Annotations | None) -> Optional[str]:
if data is None:
return None
return json.dumps(data)