Skip to content

Commit 03817f0

Browse files
authored
[Datumaro] Fix image merging (#1301)
* Always merge images for own dataset * Fix codacy
1 parent 4f20f46 commit 03817f0

File tree

2 files changed

+15
-13
lines changed

2 files changed

+15
-13
lines changed

datumaro/datumaro/cli/contexts/project/__init__.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,7 @@ def import_command(args):
167167
env = Environment()
168168
log.info("Importing project from '%s'" % args.source)
169169

170+
extra_args = {}
170171
if not args.format:
171172
if args.extra_args:
172173
raise CliException("Extra args can not be used without format")
@@ -210,7 +211,7 @@ def import_command(args):
210211
log.info("Importing project as '%s'" % args.format)
211212

212213
source = osp.abspath(args.source)
213-
project = importer(source, **locals().get('extra_args', {}))
214+
project = importer(source, **extra_args)
214215
project.config.project_name = project_name
215216
project.config.project_dir = project_dir
216217

datumaro/datumaro/components/project.py

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -411,6 +411,13 @@ def _lazy_image(item):
411411

412412
@classmethod
413413
def _merge_items(cls, existing_item, current_item, path=None):
414+
return existing_item.wrap(path=path,
415+
image=cls._merge_images(existing_item, current_item),
416+
annotations=cls._merge_anno(
417+
existing_item.annotations, current_item.annotations))
418+
419+
@staticmethod
420+
def _merge_images(existing_item, current_item):
414421
image = None
415422
if existing_item.has_image and current_item.has_image:
416423
if existing_item.image.has_data:
@@ -433,9 +440,7 @@ def _merge_items(cls, existing_item, current_item, path=None):
433440
else:
434441
image = current_item.image
435442

436-
return existing_item.wrap(path=path,
437-
image=image, annotations=cls._merge_anno(
438-
existing_item.annotations, current_item.annotations))
443+
return image
439444

440445
@staticmethod
441446
def _merge_anno(a, b):
@@ -527,15 +532,11 @@ def __init__(self, project):
527532
if own_source is not None:
528533
log.debug("Loading own dataset...")
529534
for item in own_source:
530-
if not item.has_image:
531-
existing_item = subsets[item.subset].items.get(item.id)
532-
if existing_item is not None:
533-
image = None
534-
if existing_item.has_image:
535-
# TODO: think of image comparison
536-
image = self._lazy_image(existing_item)
537-
item = item.wrap(path=None,
538-
annotations=item.annotations, image=image)
535+
existing_item = subsets[item.subset].items.get(item.id)
536+
if existing_item is not None:
537+
item = item.wrap(path=None,
538+
image=self._merge_images(existing_item, item),
539+
annotations=item.annotations)
539540

540541
subsets[item.subset].items[item.id] = item
541542

0 commit comments

Comments
 (0)