From f611940fb00d3893be8f47ed77b9a63aec50f36f Mon Sep 17 00:00:00 2001 From: Martin Baeuml Date: Wed, 14 Sep 2011 16:06:30 +0200 Subject: [PATCH] add BBoxFaceInserter This is an inserter based on the SequenceItemInserter. It allows to label a bbox for a face and points for eyes and mouth centers. --- sloth/items/inserters.py | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/sloth/items/inserters.py b/sloth/items/inserters.py index aaf33f7..a0c666a 100644 --- a/sloth/items/inserters.py +++ b/sloth/items/inserters.py @@ -212,6 +212,44 @@ class SequenceItemInserter(ItemInserter): self._cleanup() self.inserterFinished.emit() +class BBoxFaceInserter(SequenceItemInserter): + inserters = [ + (RectItemInserter, "bbox", "Labelling bounding box"), + (PointItemInserter, "lec", "Labelling left eye center"), + (PointItemInserter, "rec", "Labelling right eye center"), + (PointItemInserter, "mc", "Labelling mouth center"), + ] + + def toggleOccludedForCurrentInserter(self): + if self._state > 0: + prefix = self.inserters[self._state][1] + occluded = not self._current_inserter._ann.get(prefix + 'occluded', False) + self._current_inserter._ann[prefix + 'occluded'] = occluded + if occluded: + self._scene.setMessage(self.inserters[self._state][2] + ' (occluded)') + else: + self._scene.setMessage(self.inserters[self._state][2]) + + def mousePressEvent(self, event, image_item): + if event.buttons() & Qt.RightButton: + self.toggleOccludedForCurrentInserter() + SequenceItemInserter.mousePressEvent(self, event, image_item) + + def keyPressEvent(self, event, image_item): + if event.key() == Qt.Key_O and self._state > 0: + self.toggleOccludedForCurrentInserter() + SequenceItemInserter.keyPressEvent(self, event, image_item) + + def imageChange(self): + if self._state > 0: + # restart the inserter + self._cleanup() + self.nextState(0) + self._scene.setMessage("Warning: Image changed during insert operation.\n" + + "Resetting the inserter state.\n" + + "Now at: " + self.inserters[self._state][2]) + + class NPointFaceInserter(ItemInserter): landmarks = [ ("leoc", "left eye outer corner"),