From 81dd7f99e9ae6583a0e5ba47e5311a7bc0c48bca Mon Sep 17 00:00:00 2001 From: pollfly <75068813+pollfly@users.noreply.github.com> Date: Tue, 12 Nov 2024 20:15:44 +0200 Subject: [PATCH] Add global annotation information (#961) --- docs/hyperdatasets/annotations.md | 12 ++++++++++++ .../webapp/webapp_datasets_frames.md | 8 ++++++++ .../hyperdatasets/multi_source_annotation.png | Bin 0 -> 15843 bytes 3 files changed, 20 insertions(+) create mode 100644 docs/img/hyperdatasets/multi_source_annotation.png diff --git a/docs/hyperdatasets/annotations.md b/docs/hyperdatasets/annotations.md index dd5c2bb2..fe6eb307 100644 --- a/docs/hyperdatasets/annotations.md +++ b/docs/hyperdatasets/annotations.md @@ -55,3 +55,15 @@ Use [`SingleFrame.add_annotation()`](../references/hyperdataset/singleframe.md#a # labels for the whole frame frame.add_annotation(labels=['frame level label one','frame level label two']) ``` + +### Adding a Global Annotation + +Add a global annotation that will apply to all frames in a FrameGroup. + +Use [`FrameGroup.add_global_annotation()`](../references/hyperdataset/framegroup.md#add_global_annotation) and specify +the [Annotation](../references/hyperdataset/annotation.md) object to add to each frame: + +```python +annotation = ImageAnnotation(labels=["cityscape"], confidence=1.0000,) +frame_group.add_global_annotation(annotation=annotation) +``` diff --git a/docs/hyperdatasets/webapp/webapp_datasets_frames.md b/docs/hyperdatasets/webapp/webapp_datasets_frames.md index a4eb01e3..144d43b3 100644 --- a/docs/hyperdatasets/webapp/webapp_datasets_frames.md +++ b/docs/hyperdatasets/webapp/webapp_datasets_frames.md @@ -95,6 +95,14 @@ a dropdown list in the **Current Source** section. ![Frame dropdown menu in FrameGroup](../../img/hyperdatasets/framegroup_01.png) +If an annotation applies to all frames in a FrameGroup, it is displayed with a `Multi Source` indicator: + +
+ +![Multi-source ROI](../../img/hyperdatasets/multi_source_annotation.png) + +
+ ## Masks Use the **MASKS** panel to select which masks to apply over the frame. diff --git a/docs/img/hyperdatasets/multi_source_annotation.png b/docs/img/hyperdatasets/multi_source_annotation.png new file mode 100644 index 0000000000000000000000000000000000000000..7f8d9e2e481d59d1ffd9f3f98ff319b62736763a GIT binary patch literal 15843 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