sanitize_data
函数源码
sanitized_data: Annotations = sanitize_data(
    data: Annotations | Sequence[th.AnnoItem],
    deduplicate: "add" | "drop" = "drop",
)
针对一组标记数据,进行完全清理。
数据清理将会确保:
- 所含的时间戳对应调用该方法的时刻。
 data字段的所有数据项均是可标记为AnnoItem的字典。- 任何包含值为
None的文字标注的项,会标准化为不含文字标注的数据项。 - 标记数据的边界框总是含有正值的宽和高(负值的宽或高表示起始点反向)。
 - 标记数据项将会去重。换言之,所有的ID都会得到清理。
 
该方法可以在需要保存标记数据的时候调用。运行可能会话一点时间,所以该方法可能不适合用来实时地清理标记数据。
别名
该函数可以按以下方式之一获取
import dash_picture_annotation as dpa
dpa.sanitize_data
dpa.utilities.sanitize_data
参数
输入
| 参数 | 类型 | 必选 | |
|---|---|---|---|
data | Annotations | [AnnoItem] | 要清理的标记数据。注意该方法不会原处修改此输入值本身。 | |
deduplicate | "add" | "drop" | 针对ID使用的去重方法。"add"表示透过添加后缀的方式保留重复的 ID。"drop"表示仅保留那些具有重复ID的第一次出现的项。 | 
输出
| 参数 | 类型 | |
|---|---|---|
sanitized_data | Annotations | 数据经过清理后的副本。 | 
范例
 清理一组数据(drop模式)
- 输入数据
 - 代码
 - 输出数据
 
data-input.json
| data | [-]data [10] 
  | 
以下代码会清理数据,但所有包含已重复ID的项均会删去。对任一重复ID,只保留其第一次出现的数据项。
sanitize_data_drop.py
import json
import dash_picture_annotation as dpa
with open("./data-input.json", "r") as fobj:
    data = json.load(fobj)
with open("./sanitized-data.json", "w") as fobj:
    json.dump(dpa.sanitize_data(data), fobj, indent=2, ensure_ascii=False)
sanitized-data.json
| timestamp | 1730913816961 | ||||||||||||||||||||||||||||||||||||||||||||||
| data | [-]data [8] 
  | 
 清理一组数据(add模式)
- 输入数据
 - 代码
 - 输出数据
 
data-input.json
| data | [-]data [10] 
  | 
以下代码会清理、并保留全体数据。对任一重复ID,会透过随机生成、并添加后缀的方式去重。
sanitize_data_add.py
import json
import dash_picture_annotation as dpa
with open("./data-input.json", "r") as fobj:
    data = json.load(fobj)
with open("./sanitized-data.json", "w") as fobj:
    json.dump(dpa.sanitize_data(data, "add"), fobj, indent=2, ensure_ascii=False)
sanitized-data.json
| timestamp | 1730915309229 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| data | [-]data [10] 
  |