From 90b5752346a87def100160ca85f2698f3d9b51d5 Mon Sep 17 00:00:00 2001 From: zhiltsov-max Date: Mon, 27 Jul 2020 22:40:23 +0300 Subject: [PATCH] Fix keyframe attribute of interpolated shapes (#1937) * Fix interpolated shapes * update changelog --- CHANGELOG.md | 1 + cvat/apps/dataset_manager/annotation.py | 2 +- cvat/apps/dataset_manager/tests/test_annotation.py | 10 +++++++++- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7443cb61..a2ae5ce7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -33,6 +33,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Points are dublicated during polygon interpolation sometimes () - When redraw a shape with activated autobordering, previous points are visible () - No mapping between side object element and context menu in some attributes () +- Interpolated shapes exported as `keyframe = True` (https://github.com/opencv/cvat/pull/1937) ### Security - diff --git a/cvat/apps/dataset_manager/annotation.py b/cvat/apps/dataset_manager/annotation.py index 0678adc2..040788bc 100644 --- a/cvat/apps/dataset_manager/annotation.py +++ b/cvat/apps/dataset_manager/annotation.py @@ -445,7 +445,7 @@ class TrackManager(ObjectManager): def get_interpolated_shapes(track, start_frame, end_frame): def copy_shape(source, frame, points=None): copied = deepcopy(source) - copied["keyframe"] = True + copied["keyframe"] = False copied["frame"] = frame if points is not None: copied["points"] = points diff --git a/cvat/apps/dataset_manager/tests/test_annotation.py b/cvat/apps/dataset_manager/tests/test_annotation.py index 580243a9..7604a4dc 100644 --- a/cvat/apps/dataset_manager/tests/test_annotation.py +++ b/cvat/apps/dataset_manager/tests/test_annotation.py @@ -38,6 +38,8 @@ class TrackManagerTest(TestCase): interpolated = TrackManager.get_interpolated_shapes(track, 0, 2) self.assertEqual(len(interpolated), 3) + self.assertTrue(interpolated[0]["keyframe"]) + self.assertFalse(interpolated[1]["keyframe"]) def test_polygon_interpolation(self): track = { @@ -69,6 +71,8 @@ class TrackManagerTest(TestCase): interpolated = TrackManager.get_interpolated_shapes(track, 0, 2) self.assertEqual(len(interpolated), 3) + self.assertTrue(interpolated[0]["keyframe"]) + self.assertFalse(interpolated[1]["keyframe"]) def test_bbox_interpolation(self): track = { @@ -100,6 +104,8 @@ class TrackManagerTest(TestCase): interpolated = TrackManager.get_interpolated_shapes(track, 0, 2) self.assertEqual(len(interpolated), 3) + self.assertTrue(interpolated[0]["keyframe"]) + self.assertFalse(interpolated[1]["keyframe"]) def test_line_interpolation(self): track = { @@ -130,4 +136,6 @@ class TrackManagerTest(TestCase): interpolated = TrackManager.get_interpolated_shapes(track, 0, 2) - self.assertEqual(len(interpolated), 3) \ No newline at end of file + self.assertEqual(len(interpolated), 3) + self.assertTrue(interpolated[0]["keyframe"]) + self.assertFalse(interpolated[1]["keyframe"]) \ No newline at end of file