sanitize_data_item
函数源码
sanitized_item: AnnoItem | None = sanitize_data_item(data_item: AnnoItem | AnnoMark)
针对某一标记数据项,进行完全清理。
数据清理将会确保:
- 返回的结果是可以标记为
AnnoItem
的字典。 - 值为
None
的文字标注会移除。 - 标记数据的边界框总是含有正值的宽和高(负值的宽或高表示起始点反向)。
- 若数据项中未提供ID,会随机生成一个6个字符长的ID。
别名
该函数可以按以下方式之一获取
import dash_picture_annotation as dpa
dpa.sanitize_data_item
dpa.utilities.sanitize_data_item
参数
输入
参数 | 类型 | 必选 | |
---|---|---|---|
data_item | AnnoItem | AnnoMark | 要清理的标记数据项。若data_item 只包含位置信息,则会为其添加ID。 |
输出
参数 | 类型 | |
---|---|---|
sanitized_item | AnnoItem | None | 数据项经过清理后的副本。若给定数据无法清理,则返回None 。 |
范例
清理一个数据项
- 代码
- 结果
sanitize_data_item.py
import pprint
import dash_picture_annotation as dpa
mark = lambda pos: {"x": pos, "y": 0, "width": 0, "height": pos, "type": "RECT"}
mark_eq = lambda pos: {"x": pos, "y": pos, "width": 0, "height": -pos, "type": "RECT"}
pprint.pprint(dpa.sanitize_data_item(mark(17.7)))
pprint.pprint(dpa.sanitize_data_item(mark_eq(17.7)))
pprint.pprint(dpa.sanitize_data_item({"mark": mark(-17.7), "comment": "test"}))
{'id': '1f0ef8',
'mark': {'height': 17.7, 'type': 'RECT', 'width': 0, 'x': 17.7, 'y': 0}}
{'id': '2b672d',
'mark': {'height': 17.7, 'type': 'RECT', 'width': 0, 'x': 17.7, 'y': 0.0}}
{'comment': 'test',
'id': 'efbef4',
'mark': {'height': 17.7, 'type': 'RECT', 'width': 0, 'x': -17.7, 'y': -17.7}}