dtlpy 1.114.17__py3-none-any.whl → 1.116.6__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- dtlpy/__init__.py +491 -491
- dtlpy/__version__.py +1 -1
- dtlpy/assets/__init__.py +26 -26
- dtlpy/assets/code_server/config.yaml +2 -2
- dtlpy/assets/code_server/installation.sh +24 -24
- dtlpy/assets/code_server/launch.json +13 -13
- dtlpy/assets/code_server/settings.json +2 -2
- dtlpy/assets/main.py +53 -53
- dtlpy/assets/main_partial.py +18 -18
- dtlpy/assets/mock.json +11 -11
- dtlpy/assets/model_adapter.py +83 -83
- dtlpy/assets/package.json +61 -61
- dtlpy/assets/package_catalog.json +29 -29
- dtlpy/assets/package_gitignore +307 -307
- dtlpy/assets/service_runners/__init__.py +33 -33
- dtlpy/assets/service_runners/converter.py +96 -96
- dtlpy/assets/service_runners/multi_method.py +49 -49
- dtlpy/assets/service_runners/multi_method_annotation.py +54 -54
- dtlpy/assets/service_runners/multi_method_dataset.py +55 -55
- dtlpy/assets/service_runners/multi_method_item.py +52 -52
- dtlpy/assets/service_runners/multi_method_json.py +52 -52
- dtlpy/assets/service_runners/single_method.py +37 -37
- dtlpy/assets/service_runners/single_method_annotation.py +43 -43
- dtlpy/assets/service_runners/single_method_dataset.py +43 -43
- dtlpy/assets/service_runners/single_method_item.py +41 -41
- dtlpy/assets/service_runners/single_method_json.py +42 -42
- dtlpy/assets/service_runners/single_method_multi_input.py +45 -45
- dtlpy/assets/voc_annotation_template.xml +23 -23
- dtlpy/caches/base_cache.py +32 -32
- dtlpy/caches/cache.py +473 -473
- dtlpy/caches/dl_cache.py +201 -201
- dtlpy/caches/filesystem_cache.py +89 -89
- dtlpy/caches/redis_cache.py +84 -84
- dtlpy/dlp/__init__.py +20 -20
- dtlpy/dlp/cli_utilities.py +367 -367
- dtlpy/dlp/command_executor.py +764 -764
- dtlpy/dlp/dlp +1 -1
- dtlpy/dlp/dlp.bat +1 -1
- dtlpy/dlp/dlp.py +128 -128
- dtlpy/dlp/parser.py +651 -651
- dtlpy/entities/__init__.py +83 -83
- dtlpy/entities/analytic.py +347 -311
- dtlpy/entities/annotation.py +1879 -1879
- dtlpy/entities/annotation_collection.py +699 -699
- dtlpy/entities/annotation_definitions/__init__.py +20 -20
- dtlpy/entities/annotation_definitions/base_annotation_definition.py +100 -100
- dtlpy/entities/annotation_definitions/box.py +195 -195
- dtlpy/entities/annotation_definitions/classification.py +67 -67
- dtlpy/entities/annotation_definitions/comparison.py +72 -72
- dtlpy/entities/annotation_definitions/cube.py +204 -204
- dtlpy/entities/annotation_definitions/cube_3d.py +149 -149
- dtlpy/entities/annotation_definitions/description.py +32 -32
- dtlpy/entities/annotation_definitions/ellipse.py +124 -124
- dtlpy/entities/annotation_definitions/free_text.py +62 -62
- dtlpy/entities/annotation_definitions/gis.py +69 -69
- dtlpy/entities/annotation_definitions/note.py +139 -139
- dtlpy/entities/annotation_definitions/point.py +117 -117
- dtlpy/entities/annotation_definitions/polygon.py +182 -182
- dtlpy/entities/annotation_definitions/polyline.py +111 -111
- dtlpy/entities/annotation_definitions/pose.py +92 -92
- dtlpy/entities/annotation_definitions/ref_image.py +86 -86
- dtlpy/entities/annotation_definitions/segmentation.py +240 -240
- dtlpy/entities/annotation_definitions/subtitle.py +34 -34
- dtlpy/entities/annotation_definitions/text.py +85 -85
- dtlpy/entities/annotation_definitions/undefined_annotation.py +74 -74
- dtlpy/entities/app.py +220 -220
- dtlpy/entities/app_module.py +107 -107
- dtlpy/entities/artifact.py +174 -174
- dtlpy/entities/assignment.py +399 -399
- dtlpy/entities/base_entity.py +214 -214
- dtlpy/entities/bot.py +113 -113
- dtlpy/entities/codebase.py +292 -296
- dtlpy/entities/collection.py +38 -38
- dtlpy/entities/command.py +169 -169
- dtlpy/entities/compute.py +449 -442
- dtlpy/entities/dataset.py +1299 -1285
- dtlpy/entities/directory_tree.py +44 -44
- dtlpy/entities/dpk.py +470 -470
- dtlpy/entities/driver.py +235 -223
- dtlpy/entities/execution.py +397 -397
- dtlpy/entities/feature.py +124 -124
- dtlpy/entities/feature_set.py +145 -145
- dtlpy/entities/filters.py +798 -645
- dtlpy/entities/gis_item.py +107 -107
- dtlpy/entities/integration.py +184 -184
- dtlpy/entities/item.py +959 -953
- dtlpy/entities/label.py +123 -123
- dtlpy/entities/links.py +85 -85
- dtlpy/entities/message.py +175 -175
- dtlpy/entities/model.py +684 -684
- dtlpy/entities/node.py +1005 -1005
- dtlpy/entities/ontology.py +810 -803
- dtlpy/entities/organization.py +287 -287
- dtlpy/entities/package.py +657 -657
- dtlpy/entities/package_defaults.py +5 -5
- dtlpy/entities/package_function.py +185 -185
- dtlpy/entities/package_module.py +113 -113
- dtlpy/entities/package_slot.py +118 -118
- dtlpy/entities/paged_entities.py +299 -299
- dtlpy/entities/pipeline.py +624 -624
- dtlpy/entities/pipeline_execution.py +279 -279
- dtlpy/entities/project.py +394 -394
- dtlpy/entities/prompt_item.py +505 -499
- dtlpy/entities/recipe.py +301 -301
- dtlpy/entities/reflect_dict.py +102 -102
- dtlpy/entities/resource_execution.py +138 -138
- dtlpy/entities/service.py +963 -958
- dtlpy/entities/service_driver.py +117 -117
- dtlpy/entities/setting.py +294 -294
- dtlpy/entities/task.py +495 -495
- dtlpy/entities/time_series.py +143 -143
- dtlpy/entities/trigger.py +426 -426
- dtlpy/entities/user.py +118 -118
- dtlpy/entities/webhook.py +124 -124
- dtlpy/examples/__init__.py +19 -19
- dtlpy/examples/add_labels.py +135 -135
- dtlpy/examples/add_metadata_to_item.py +21 -21
- dtlpy/examples/annotate_items_using_model.py +65 -65
- dtlpy/examples/annotate_video_using_model_and_tracker.py +75 -75
- dtlpy/examples/annotations_convert_to_voc.py +9 -9
- dtlpy/examples/annotations_convert_to_yolo.py +9 -9
- dtlpy/examples/convert_annotation_types.py +51 -51
- dtlpy/examples/converter.py +143 -143
- dtlpy/examples/copy_annotations.py +22 -22
- dtlpy/examples/copy_folder.py +31 -31
- dtlpy/examples/create_annotations.py +51 -51
- dtlpy/examples/create_video_annotations.py +83 -83
- dtlpy/examples/delete_annotations.py +26 -26
- dtlpy/examples/filters.py +113 -113
- dtlpy/examples/move_item.py +23 -23
- dtlpy/examples/play_video_annotation.py +13 -13
- dtlpy/examples/show_item_and_mask.py +53 -53
- dtlpy/examples/triggers.py +49 -49
- dtlpy/examples/upload_batch_of_items.py +20 -20
- dtlpy/examples/upload_items_and_custom_format_annotations.py +55 -55
- dtlpy/examples/upload_items_with_modalities.py +43 -43
- dtlpy/examples/upload_segmentation_annotations_from_mask_image.py +44 -44
- dtlpy/examples/upload_yolo_format_annotations.py +70 -70
- dtlpy/exceptions.py +125 -125
- dtlpy/miscellaneous/__init__.py +20 -20
- dtlpy/miscellaneous/dict_differ.py +95 -95
- dtlpy/miscellaneous/git_utils.py +217 -217
- dtlpy/miscellaneous/json_utils.py +14 -14
- dtlpy/miscellaneous/list_print.py +105 -105
- dtlpy/miscellaneous/zipping.py +130 -130
- dtlpy/ml/__init__.py +20 -20
- dtlpy/ml/base_feature_extractor_adapter.py +27 -27
- dtlpy/ml/base_model_adapter.py +1257 -1086
- dtlpy/ml/metrics.py +461 -461
- dtlpy/ml/predictions_utils.py +274 -274
- dtlpy/ml/summary_writer.py +57 -57
- dtlpy/ml/train_utils.py +60 -60
- dtlpy/new_instance.py +252 -252
- dtlpy/repositories/__init__.py +56 -56
- dtlpy/repositories/analytics.py +85 -85
- dtlpy/repositories/annotations.py +916 -916
- dtlpy/repositories/apps.py +383 -383
- dtlpy/repositories/artifacts.py +452 -452
- dtlpy/repositories/assignments.py +599 -599
- dtlpy/repositories/bots.py +213 -213
- dtlpy/repositories/codebases.py +559 -559
- dtlpy/repositories/collections.py +332 -332
- dtlpy/repositories/commands.py +152 -158
- dtlpy/repositories/compositions.py +61 -61
- dtlpy/repositories/computes.py +439 -435
- dtlpy/repositories/datasets.py +1504 -1291
- dtlpy/repositories/downloader.py +976 -903
- dtlpy/repositories/dpks.py +433 -433
- dtlpy/repositories/drivers.py +482 -470
- dtlpy/repositories/executions.py +815 -817
- dtlpy/repositories/feature_sets.py +226 -226
- dtlpy/repositories/features.py +255 -238
- dtlpy/repositories/integrations.py +484 -484
- dtlpy/repositories/items.py +912 -909
- dtlpy/repositories/messages.py +94 -94
- dtlpy/repositories/models.py +1000 -988
- dtlpy/repositories/nodes.py +80 -80
- dtlpy/repositories/ontologies.py +511 -511
- dtlpy/repositories/organizations.py +525 -525
- dtlpy/repositories/packages.py +1941 -1941
- dtlpy/repositories/pipeline_executions.py +451 -451
- dtlpy/repositories/pipelines.py +640 -640
- dtlpy/repositories/projects.py +539 -539
- dtlpy/repositories/recipes.py +419 -399
- dtlpy/repositories/resource_executions.py +137 -137
- dtlpy/repositories/schema.py +120 -120
- dtlpy/repositories/service_drivers.py +213 -213
- dtlpy/repositories/services.py +1704 -1704
- dtlpy/repositories/settings.py +339 -339
- dtlpy/repositories/tasks.py +1477 -1477
- dtlpy/repositories/times_series.py +278 -278
- dtlpy/repositories/triggers.py +536 -536
- dtlpy/repositories/upload_element.py +257 -257
- dtlpy/repositories/uploader.py +661 -651
- dtlpy/repositories/webhooks.py +249 -249
- dtlpy/services/__init__.py +22 -22
- dtlpy/services/aihttp_retry.py +131 -131
- dtlpy/services/api_client.py +1785 -1782
- dtlpy/services/api_reference.py +40 -40
- dtlpy/services/async_utils.py +133 -133
- dtlpy/services/calls_counter.py +44 -44
- dtlpy/services/check_sdk.py +68 -68
- dtlpy/services/cookie.py +115 -115
- dtlpy/services/create_logger.py +156 -156
- dtlpy/services/events.py +84 -84
- dtlpy/services/logins.py +235 -235
- dtlpy/services/reporter.py +256 -256
- dtlpy/services/service_defaults.py +91 -91
- dtlpy/utilities/__init__.py +20 -20
- dtlpy/utilities/annotations/__init__.py +16 -16
- dtlpy/utilities/annotations/annotation_converters.py +269 -269
- dtlpy/utilities/base_package_runner.py +285 -264
- dtlpy/utilities/converter.py +1650 -1650
- dtlpy/utilities/dataset_generators/__init__.py +1 -1
- dtlpy/utilities/dataset_generators/dataset_generator.py +670 -670
- dtlpy/utilities/dataset_generators/dataset_generator_tensorflow.py +23 -23
- dtlpy/utilities/dataset_generators/dataset_generator_torch.py +21 -21
- dtlpy/utilities/local_development/__init__.py +1 -1
- dtlpy/utilities/local_development/local_session.py +179 -179
- dtlpy/utilities/reports/__init__.py +2 -2
- dtlpy/utilities/reports/figures.py +343 -343
- dtlpy/utilities/reports/report.py +71 -71
- dtlpy/utilities/videos/__init__.py +17 -17
- dtlpy/utilities/videos/video_player.py +598 -598
- dtlpy/utilities/videos/videos.py +470 -470
- {dtlpy-1.114.17.data → dtlpy-1.116.6.data}/scripts/dlp +1 -1
- dtlpy-1.116.6.data/scripts/dlp.bat +2 -0
- {dtlpy-1.114.17.data → dtlpy-1.116.6.data}/scripts/dlp.py +128 -128
- {dtlpy-1.114.17.dist-info → dtlpy-1.116.6.dist-info}/METADATA +186 -183
- dtlpy-1.116.6.dist-info/RECORD +239 -0
- {dtlpy-1.114.17.dist-info → dtlpy-1.116.6.dist-info}/WHEEL +1 -1
- {dtlpy-1.114.17.dist-info → dtlpy-1.116.6.dist-info}/licenses/LICENSE +200 -200
- tests/features/environment.py +551 -551
- dtlpy/assets/__pycache__/__init__.cpython-310.pyc +0 -0
- dtlpy-1.114.17.data/scripts/dlp.bat +0 -2
- dtlpy-1.114.17.dist-info/RECORD +0 -240
- {dtlpy-1.114.17.dist-info → dtlpy-1.116.6.dist-info}/entry_points.txt +0 -0
- {dtlpy-1.114.17.dist-info → dtlpy-1.116.6.dist-info}/top_level.txt +0 -0
|
@@ -1,85 +1,85 @@
|
|
|
1
|
-
from . import BaseAnnotationDefinition
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
class Text(BaseAnnotationDefinition):
|
|
5
|
-
"""
|
|
6
|
-
can create a text annotation having two types (paragraph, block)
|
|
7
|
-
"""
|
|
8
|
-
type = "text_mark"
|
|
9
|
-
|
|
10
|
-
def __init__(self, text_type, start, end, label,
|
|
11
|
-
top=None, left=None, attributes=None, description=None):
|
|
12
|
-
"""
|
|
13
|
-
can create a text annotation having two types (paragraph, block)
|
|
14
|
-
|
|
15
|
-
:param text_type: text type (paragraph, block)
|
|
16
|
-
:param start: start position in characters
|
|
17
|
-
:param end: end position in characters
|
|
18
|
-
:param label: annotation label
|
|
19
|
-
:param top: top box pixel
|
|
20
|
-
:param left: left box pixel
|
|
21
|
-
:param attributes: annotation attributes
|
|
22
|
-
:param description:
|
|
23
|
-
|
|
24
|
-
:return:
|
|
25
|
-
"""
|
|
26
|
-
super().__init__(description=description, attributes=attributes)
|
|
27
|
-
self.text_type = text_type
|
|
28
|
-
self.start = start
|
|
29
|
-
self.end = end
|
|
30
|
-
self.top = top
|
|
31
|
-
self.left = left
|
|
32
|
-
self.label = label
|
|
33
|
-
|
|
34
|
-
@property
|
|
35
|
-
def x(self):
|
|
36
|
-
return 0
|
|
37
|
-
|
|
38
|
-
@property
|
|
39
|
-
def y(self):
|
|
40
|
-
return 0
|
|
41
|
-
|
|
42
|
-
@property
|
|
43
|
-
def geo(self):
|
|
44
|
-
return list()
|
|
45
|
-
|
|
46
|
-
def show(self, image, thickness, with_text, height, width, annotation_format, color, alpha=1):
|
|
47
|
-
"""
|
|
48
|
-
Show annotation as ndarray
|
|
49
|
-
:param image: empty or image to draw on
|
|
50
|
-
:param thickness:
|
|
51
|
-
:param with_text: not required
|
|
52
|
-
:param height: item height
|
|
53
|
-
:param width: item width
|
|
54
|
-
:param annotation_format: options: list(dl.ViewAnnotationOptions)
|
|
55
|
-
:param color: color
|
|
56
|
-
:param alpha: opacity value [0 1], default 1
|
|
57
|
-
:return: ndarray
|
|
58
|
-
"""
|
|
59
|
-
return self.add_text_to_image(image=image, annotation=self)
|
|
60
|
-
|
|
61
|
-
def to_coordinates(self, color):
|
|
62
|
-
coordinates = {
|
|
63
|
-
"type": self.text_type,
|
|
64
|
-
"label": self.label,
|
|
65
|
-
"start": self.start,
|
|
66
|
-
"end": self.end
|
|
67
|
-
}
|
|
68
|
-
if self.top is not None and self.left is not None:
|
|
69
|
-
coordinates['top'] = self.top
|
|
70
|
-
coordinates['left'] = self.left
|
|
71
|
-
return coordinates
|
|
72
|
-
|
|
73
|
-
@classmethod
|
|
74
|
-
def from_json(cls, _json):
|
|
75
|
-
coordinates = _json["coordinates"]
|
|
76
|
-
|
|
77
|
-
return cls(
|
|
78
|
-
text_type=coordinates.get("type"),
|
|
79
|
-
start=coordinates.get("start"),
|
|
80
|
-
end=coordinates.get("end"),
|
|
81
|
-
top=coordinates.get("top", None),
|
|
82
|
-
left=coordinates.get("left", None),
|
|
83
|
-
label=_json["label"],
|
|
84
|
-
attributes=_json.get("attributes", None),
|
|
85
|
-
)
|
|
1
|
+
from . import BaseAnnotationDefinition
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class Text(BaseAnnotationDefinition):
|
|
5
|
+
"""
|
|
6
|
+
can create a text annotation having two types (paragraph, block)
|
|
7
|
+
"""
|
|
8
|
+
type = "text_mark"
|
|
9
|
+
|
|
10
|
+
def __init__(self, text_type, start, end, label,
|
|
11
|
+
top=None, left=None, attributes=None, description=None):
|
|
12
|
+
"""
|
|
13
|
+
can create a text annotation having two types (paragraph, block)
|
|
14
|
+
|
|
15
|
+
:param text_type: text type (paragraph, block)
|
|
16
|
+
:param start: start position in characters
|
|
17
|
+
:param end: end position in characters
|
|
18
|
+
:param label: annotation label
|
|
19
|
+
:param top: top box pixel
|
|
20
|
+
:param left: left box pixel
|
|
21
|
+
:param attributes: annotation attributes
|
|
22
|
+
:param description:
|
|
23
|
+
|
|
24
|
+
:return:
|
|
25
|
+
"""
|
|
26
|
+
super().__init__(description=description, attributes=attributes)
|
|
27
|
+
self.text_type = text_type
|
|
28
|
+
self.start = start
|
|
29
|
+
self.end = end
|
|
30
|
+
self.top = top
|
|
31
|
+
self.left = left
|
|
32
|
+
self.label = label
|
|
33
|
+
|
|
34
|
+
@property
|
|
35
|
+
def x(self):
|
|
36
|
+
return 0
|
|
37
|
+
|
|
38
|
+
@property
|
|
39
|
+
def y(self):
|
|
40
|
+
return 0
|
|
41
|
+
|
|
42
|
+
@property
|
|
43
|
+
def geo(self):
|
|
44
|
+
return list()
|
|
45
|
+
|
|
46
|
+
def show(self, image, thickness, with_text, height, width, annotation_format, color, alpha=1):
|
|
47
|
+
"""
|
|
48
|
+
Show annotation as ndarray
|
|
49
|
+
:param image: empty or image to draw on
|
|
50
|
+
:param thickness:
|
|
51
|
+
:param with_text: not required
|
|
52
|
+
:param height: item height
|
|
53
|
+
:param width: item width
|
|
54
|
+
:param annotation_format: options: list(dl.ViewAnnotationOptions)
|
|
55
|
+
:param color: color
|
|
56
|
+
:param alpha: opacity value [0 1], default 1
|
|
57
|
+
:return: ndarray
|
|
58
|
+
"""
|
|
59
|
+
return self.add_text_to_image(image=image, annotation=self)
|
|
60
|
+
|
|
61
|
+
def to_coordinates(self, color):
|
|
62
|
+
coordinates = {
|
|
63
|
+
"type": self.text_type,
|
|
64
|
+
"label": self.label,
|
|
65
|
+
"start": self.start,
|
|
66
|
+
"end": self.end
|
|
67
|
+
}
|
|
68
|
+
if self.top is not None and self.left is not None:
|
|
69
|
+
coordinates['top'] = self.top
|
|
70
|
+
coordinates['left'] = self.left
|
|
71
|
+
return coordinates
|
|
72
|
+
|
|
73
|
+
@classmethod
|
|
74
|
+
def from_json(cls, _json):
|
|
75
|
+
coordinates = _json["coordinates"]
|
|
76
|
+
|
|
77
|
+
return cls(
|
|
78
|
+
text_type=coordinates.get("type"),
|
|
79
|
+
start=coordinates.get("start"),
|
|
80
|
+
end=coordinates.get("end"),
|
|
81
|
+
top=coordinates.get("top", None),
|
|
82
|
+
left=coordinates.get("left", None),
|
|
83
|
+
label=_json["label"],
|
|
84
|
+
attributes=_json.get("attributes", None),
|
|
85
|
+
)
|
|
@@ -1,74 +1,74 @@
|
|
|
1
|
-
from . import BaseAnnotationDefinition
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
class UndefinedAnnotationType(BaseAnnotationDefinition):
|
|
5
|
-
"""
|
|
6
|
-
UndefinedAnnotationType annotation object
|
|
7
|
-
"""
|
|
8
|
-
|
|
9
|
-
def __init__(self, type, label, coordinates, attributes=None, description=None):
|
|
10
|
-
super().__init__(description=description, attributes=attributes)
|
|
11
|
-
self.type = type
|
|
12
|
-
|
|
13
|
-
self.label = label
|
|
14
|
-
self.coordinates = coordinates
|
|
15
|
-
|
|
16
|
-
@property
|
|
17
|
-
def geo(self):
|
|
18
|
-
return 0
|
|
19
|
-
|
|
20
|
-
@property
|
|
21
|
-
def left(self):
|
|
22
|
-
return 0
|
|
23
|
-
|
|
24
|
-
@property
|
|
25
|
-
def top(self):
|
|
26
|
-
return 0
|
|
27
|
-
|
|
28
|
-
@property
|
|
29
|
-
def right(self):
|
|
30
|
-
return 0
|
|
31
|
-
|
|
32
|
-
@property
|
|
33
|
-
def bottom(self):
|
|
34
|
-
return 0
|
|
35
|
-
|
|
36
|
-
@property
|
|
37
|
-
def z(self):
|
|
38
|
-
return 0
|
|
39
|
-
|
|
40
|
-
def show(self, image, thickness, with_text, height, width, annotation_format, color, alpha=1):
|
|
41
|
-
"""
|
|
42
|
-
Show annotation as ndarray
|
|
43
|
-
:param image: empty or image to draw on
|
|
44
|
-
:param thickness:
|
|
45
|
-
:param with_text: not required
|
|
46
|
-
:param height: item height
|
|
47
|
-
:param width: item width
|
|
48
|
-
:param annotation_format: options: list(dl.ViewAnnotationOptions)
|
|
49
|
-
:param color: color
|
|
50
|
-
:param alpha: opacity value [0 1], default 1
|
|
51
|
-
:return: ndarray
|
|
52
|
-
"""
|
|
53
|
-
if with_text:
|
|
54
|
-
image = self.add_text_to_image(image=image, annotation=self)
|
|
55
|
-
return image
|
|
56
|
-
|
|
57
|
-
def to_coordinates(self, color):
|
|
58
|
-
return self.coordinates
|
|
59
|
-
|
|
60
|
-
@classmethod
|
|
61
|
-
def from_json(cls, _json):
|
|
62
|
-
if "coordinates" in _json:
|
|
63
|
-
coordinates = _json["coordinates"]
|
|
64
|
-
elif "data" in _json:
|
|
65
|
-
coordinates = _json["data"]
|
|
66
|
-
else:
|
|
67
|
-
coordinates = dict()
|
|
68
|
-
|
|
69
|
-
return cls(
|
|
70
|
-
coordinates=coordinates,
|
|
71
|
-
label=_json.get("label", None),
|
|
72
|
-
type=_json.get('type', None),
|
|
73
|
-
attributes=_json.get("attributes", None)
|
|
74
|
-
)
|
|
1
|
+
from . import BaseAnnotationDefinition
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class UndefinedAnnotationType(BaseAnnotationDefinition):
|
|
5
|
+
"""
|
|
6
|
+
UndefinedAnnotationType annotation object
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
def __init__(self, type, label, coordinates, attributes=None, description=None):
|
|
10
|
+
super().__init__(description=description, attributes=attributes)
|
|
11
|
+
self.type = type
|
|
12
|
+
|
|
13
|
+
self.label = label
|
|
14
|
+
self.coordinates = coordinates
|
|
15
|
+
|
|
16
|
+
@property
|
|
17
|
+
def geo(self):
|
|
18
|
+
return 0
|
|
19
|
+
|
|
20
|
+
@property
|
|
21
|
+
def left(self):
|
|
22
|
+
return 0
|
|
23
|
+
|
|
24
|
+
@property
|
|
25
|
+
def top(self):
|
|
26
|
+
return 0
|
|
27
|
+
|
|
28
|
+
@property
|
|
29
|
+
def right(self):
|
|
30
|
+
return 0
|
|
31
|
+
|
|
32
|
+
@property
|
|
33
|
+
def bottom(self):
|
|
34
|
+
return 0
|
|
35
|
+
|
|
36
|
+
@property
|
|
37
|
+
def z(self):
|
|
38
|
+
return 0
|
|
39
|
+
|
|
40
|
+
def show(self, image, thickness, with_text, height, width, annotation_format, color, alpha=1):
|
|
41
|
+
"""
|
|
42
|
+
Show annotation as ndarray
|
|
43
|
+
:param image: empty or image to draw on
|
|
44
|
+
:param thickness:
|
|
45
|
+
:param with_text: not required
|
|
46
|
+
:param height: item height
|
|
47
|
+
:param width: item width
|
|
48
|
+
:param annotation_format: options: list(dl.ViewAnnotationOptions)
|
|
49
|
+
:param color: color
|
|
50
|
+
:param alpha: opacity value [0 1], default 1
|
|
51
|
+
:return: ndarray
|
|
52
|
+
"""
|
|
53
|
+
if with_text:
|
|
54
|
+
image = self.add_text_to_image(image=image, annotation=self)
|
|
55
|
+
return image
|
|
56
|
+
|
|
57
|
+
def to_coordinates(self, color):
|
|
58
|
+
return self.coordinates
|
|
59
|
+
|
|
60
|
+
@classmethod
|
|
61
|
+
def from_json(cls, _json):
|
|
62
|
+
if "coordinates" in _json:
|
|
63
|
+
coordinates = _json["coordinates"]
|
|
64
|
+
elif "data" in _json:
|
|
65
|
+
coordinates = _json["data"]
|
|
66
|
+
else:
|
|
67
|
+
coordinates = dict()
|
|
68
|
+
|
|
69
|
+
return cls(
|
|
70
|
+
coordinates=coordinates,
|
|
71
|
+
label=_json.get("label", None),
|
|
72
|
+
type=_json.get('type', None),
|
|
73
|
+
attributes=_json.get("attributes", None)
|
|
74
|
+
)
|