|
@@ -1,8 +1,14 @@
|
|
|
import numpy as np
|
|
|
|
|
|
-from . import BaseMixin
|
|
|
+from cvdatasets.dataset.mixins import BaseMixin
|
|
|
|
|
|
-class BBCropMixin(BaseMixin):
|
|
|
+class BBoxMixin(BaseMixin):
|
|
|
+
|
|
|
+ def bounding_box(self, i):
|
|
|
+ bbox = self._get("bounding_box", i)
|
|
|
+ return [bbox[attr] for attr in "xywh"]
|
|
|
+
|
|
|
+class BBCropMixin(BBoxMixin):
|
|
|
|
|
|
def __init__(self, *, crop_to_bb=False, crop_uniform=False, **kwargs):
|
|
|
super(BBCropMixin, self).__init__(**kwargs)
|
|
@@ -10,8 +16,7 @@ class BBCropMixin(BaseMixin):
|
|
|
self.crop_uniform = crop_uniform
|
|
|
|
|
|
def bounding_box(self, i):
|
|
|
- bbox = self._get("bounding_box", i)
|
|
|
- x,y,w,h = [bbox[attr] for attr in "xywh"]
|
|
|
+ x,y,w,h = super(BBCropMixin, self).bounding_box(i)
|
|
|
if self.crop_uniform:
|
|
|
x0 = x + w//2
|
|
|
y0 = y + h//2
|
|
@@ -29,7 +34,7 @@ class BBCropMixin(BaseMixin):
|
|
|
return im_obj.crop(*bb)
|
|
|
return im_obj
|
|
|
|
|
|
-class PartsInBBMixin(BaseMixin):
|
|
|
+class PartsInBBMixin(BBoxMixin):
|
|
|
def __init__(self, parts_in_bb=False, *args, **kwargs):
|
|
|
super(PartsInBBMixin, self).__init__(*args, **kwargs)
|
|
|
self.parts_in_bb = parts_in_bb
|