|
|
|
|
@ -167,3 +167,139 @@ class TrackManagerTest(TestCase):
|
|
|
|
|
|
|
|
|
|
self._check_interpolation(track)
|
|
|
|
|
|
|
|
|
|
def test_outside_bbox_interpolation(self):
|
|
|
|
|
track = {
|
|
|
|
|
"frame": 0,
|
|
|
|
|
"label_id": 0,
|
|
|
|
|
"group": None,
|
|
|
|
|
"attributes": [],
|
|
|
|
|
"source": "manual",
|
|
|
|
|
"shapes": [
|
|
|
|
|
{
|
|
|
|
|
"frame": 0,
|
|
|
|
|
"points": [1.0, 2.0, 3.0, 4.0],
|
|
|
|
|
"type": "rectangle",
|
|
|
|
|
"occluded": False,
|
|
|
|
|
"outside": False,
|
|
|
|
|
"attributes": []
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"frame": 2,
|
|
|
|
|
"points": [3.0, 4.0, 5.0, 6.0],
|
|
|
|
|
"type": "rectangle",
|
|
|
|
|
"occluded": False,
|
|
|
|
|
"outside": True,
|
|
|
|
|
"attributes": [],
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"frame": 4,
|
|
|
|
|
"points": [5.0, 6.0, 7.0, 8.0],
|
|
|
|
|
"type": "rectangle",
|
|
|
|
|
"occluded": False,
|
|
|
|
|
"outside": True,
|
|
|
|
|
"attributes": []
|
|
|
|
|
}
|
|
|
|
|
]
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
expected_shapes = [
|
|
|
|
|
{
|
|
|
|
|
"frame": 0,
|
|
|
|
|
"points": [1.0, 2.0, 3.0, 4.0],
|
|
|
|
|
"type": "rectangle",
|
|
|
|
|
"occluded": False,
|
|
|
|
|
"outside": False,
|
|
|
|
|
"attributes": [],
|
|
|
|
|
"keyframe": True
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"frame": 1,
|
|
|
|
|
"points": [2.0, 3.0, 4.0, 5.0],
|
|
|
|
|
"type": "rectangle",
|
|
|
|
|
"occluded": False,
|
|
|
|
|
"outside": False,
|
|
|
|
|
"attributes": [],
|
|
|
|
|
"keyframe": False
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"frame": 2,
|
|
|
|
|
"points": [3.0, 4.0, 5.0, 6.0],
|
|
|
|
|
"type": "rectangle",
|
|
|
|
|
"occluded": False,
|
|
|
|
|
"outside": True,
|
|
|
|
|
"attributes": [],
|
|
|
|
|
"keyframe": True
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"frame": 4,
|
|
|
|
|
"points": [5.0, 6.0, 7.0, 8.0],
|
|
|
|
|
"type": "rectangle",
|
|
|
|
|
"occluded": False,
|
|
|
|
|
"outside": True,
|
|
|
|
|
"attributes": [],
|
|
|
|
|
"keyframe": True
|
|
|
|
|
}
|
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
interpolated_shapes = TrackManager.get_interpolated_shapes(track, 0, 5)
|
|
|
|
|
self.assertEqual(expected_shapes, interpolated_shapes)
|
|
|
|
|
|
|
|
|
|
def test_outside_polygon_interpolation(self):
|
|
|
|
|
track = {
|
|
|
|
|
"frame": 0,
|
|
|
|
|
"label_id": 0,
|
|
|
|
|
"group": None,
|
|
|
|
|
"attributes": [],
|
|
|
|
|
"source": "manual",
|
|
|
|
|
"shapes": [
|
|
|
|
|
{
|
|
|
|
|
"frame": 0,
|
|
|
|
|
"points": [1.0, 2.0, 3.0, 4.0, 5.0, 6.0],
|
|
|
|
|
"type": "polygon",
|
|
|
|
|
"occluded": False,
|
|
|
|
|
"outside": False,
|
|
|
|
|
"attributes": []
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"frame": 2,
|
|
|
|
|
"points": [3.0, 4.0, 5.0, 6.0, 7.0, 8.0],
|
|
|
|
|
"type": "polygon",
|
|
|
|
|
"occluded": False,
|
|
|
|
|
"outside": True,
|
|
|
|
|
"attributes": []
|
|
|
|
|
}
|
|
|
|
|
]
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
expected_shapes = [
|
|
|
|
|
{
|
|
|
|
|
"frame": 0,
|
|
|
|
|
"points": [1.0, 2.0, 3.0, 4.0, 5.0, 6.0],
|
|
|
|
|
"type": "polygon",
|
|
|
|
|
"occluded": False,
|
|
|
|
|
"outside": False,
|
|
|
|
|
"attributes": [],
|
|
|
|
|
"keyframe": True
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"frame": 1,
|
|
|
|
|
"points": [2.0, 3.0, 4.0, 5.0, 6.0, 7.0],
|
|
|
|
|
"type": "polygon",
|
|
|
|
|
"occluded": False,
|
|
|
|
|
"outside": False,
|
|
|
|
|
"attributes": [],
|
|
|
|
|
"keyframe": False
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"frame": 2,
|
|
|
|
|
"points": [3.0, 4.0, 5.0, 6.0, 7.0, 8.0],
|
|
|
|
|
"type": "polygon",
|
|
|
|
|
"occluded": False,
|
|
|
|
|
"outside": True,
|
|
|
|
|
"attributes": [],
|
|
|
|
|
"keyframe": True
|
|
|
|
|
}
|
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
interpolated_shapes = TrackManager.get_interpolated_shapes(track, 0, 3)
|
|
|
|
|
self.assertEqual(expected_shapes, interpolated_shapes)
|
|
|
|
|
|