diff --git a/icons/prev.png b/icons/prev.png new file mode 100644 index 00000000..31b45451 Binary files /dev/null and b/icons/prev.png differ diff --git a/labelImg.py b/labelImg.py index f633ecde..8a0b4b31 100755 --- a/labelImg.py +++ b/labelImg.py @@ -65,13 +65,17 @@ class MainWindow(QMainWindow, WindowMixin): # Whether we need to save or not. self.dirty = False + # Enble auto saving if pressing next + self.autoSaving = True self._noSelectionSlot = False self._beginner = True self.screencastViewer = "firefox" self.screencast = "https://youtu.be/p0nR2YsCY_U" # Main widgets and related state. - self.labelDialog = LabelDialog(parent=self) + predefined_classes = ['person', 'dog'] + self.labelHist = predefined_classes + self.labelDialog = LabelDialog(parent=self, listItem=self.labelHist) self.labelList = QListWidget() self.itemsToShapes = {} @@ -822,8 +826,14 @@ class MainWindow(QMainWindow, WindowMixin): def openNextImg(self, _value=False): + # Proceding next image without dialog if having any label + if self.autoSaving is True and self.defaultSaveDir is not None: + if self.dirty is True and self.hasLabels(): + self.saveFile() + if not self.mayContinue(): return + if len(self.mImgList) <= 0: return filename = self.mImgList.pop(0) diff --git a/libs/labelDialog.py b/libs/labelDialog.py index b9da6308..7f2b8992 100644 --- a/libs/labelDialog.py +++ b/libs/labelDialog.py @@ -49,3 +49,4 @@ class LabelDialog(QDialog): def listItemClick(self, tQListWidgetItem): text = tQListWidgetItem.text().trimmed() self.edit.setText(text) + self.validate() diff --git a/libs/labelFile.py b/libs/labelFile.py index aa86fe08..80108980 100644 --- a/libs/labelFile.py +++ b/libs/labelFile.py @@ -87,8 +87,18 @@ class LabelFile(object): for p in points: x = p[0] y = p[1] - xmin = min(x,xmin) - ymin = min(y,ymin) - xmax = max(x,xmax) - ymax = max(y,ymax) + xmin = min(x,xmin) + ymin = min(y,ymin) + xmax = max(x,xmax) + ymax = max(y,ymax) + + # Martin Kersner, 2015/11/12 + # 0-valued coordinates of BB caused an error while + # training faster-rcnn object detector. + if (xmin < 1): + xmin = 1 + + if (ymin < 1): + ymin = 1 + return (int(xmin), int(ymin), int(xmax), int(ymax))