diff --git a/cvat/apps/engine/task.py b/cvat/apps/engine/task.py index 5f768dac..f6d755be 100644 --- a/cvat/apps/engine/task.py +++ b/cvat/apps/engine/task.py @@ -362,7 +362,7 @@ def _parse_labels(labels): for token in shlex.split(labels): if token[0] != "~" and token[0] != "@": if token in parsed_labels: - raise ValueError("labels string is not corect. " + + raise ValueError("labels string is not corect. " + "`{}` label is specified at least twice.".format(token)) parsed_labels[token] = {} @@ -388,7 +388,7 @@ def _parse_labels(labels): "`{}` attribute has incorrect format.".format(attr['name'])) if attr['name'] in parsed_labels[last_label]: - raise ValueError("labels string is not corect. " + + raise ValueError("labels string is not corect. " + "`{}` attribute is specified at least twice.".format(attr['name'])) parsed_labels[last_label][attr['name']] = attr @@ -544,7 +544,6 @@ def _find_and_compress_images(upload_dir, output_dir, db_task, compress_quality, filenames.sort() if len(filenames): - compressed_names = [] for idx, name in enumerate(filenames): job.meta['status'] = 'Images are being compressed.. {}%'.format(idx * 100 // len(filenames)) job.save_meta() @@ -554,10 +553,12 @@ def _find_and_compress_images(upload_dir, output_dir, db_task, compress_quality, image = image.transpose(Image.ROTATE_180) image.save(compressed_name, quality=compress_quality, optimize=True) image.close() - compressed_names.append(compressed_name) if compressed_name != name: os.remove(name) - filenames = compressed_names + # PIL::save uses filename in order to define image extension. + # We need save it as jpeg for compression and after rename the file + # Else annotation file will contain invalid file names (with other extensions) + os.rename(compressed_name, name) for frame, image_orig_path in enumerate(filenames): image_dest_path = _get_frame_path(frame, output_dir)