def process_image(self, image):
        """Process an image."""
        self._state = None
        self._targets_confidences = []
        self._predictions = {}
        try:
            self._dsobject.detect(image)
        except ds.DeepstackException as exc:
            _LOGGER.error("Depstack error : %s", exc)
            return

        predictions = self._dsobject.predictions.copy()

        if len(predictions) > 0:
            raw_confidences = ds.get_object_confidences(predictions, self._target)
            self._targets_confidences = [
                ds.format_confidence(confidence) for confidence in raw_confidences
            ]
            self._state = len(
                ds.get_confidences_above_threshold(
                    self._targets_confidences, self._confidence
                )
            )
            self._predictions = ds.get_objects_summary(predictions)
            self.fire_prediction_events(predictions, self._confidence)
            if hasattr(self, "_save_file_folder") and self._state > 0:
                self.save_image(
                    image, predictions, self._target, self._save_file_folder
                )
    def process_image(self, image):
        """Process an image."""
        self._image_width, self._image_height = Image.open(
            io.BytesIO(bytearray(image))).size
        self._state = None
        self._targets_confidences = []
        self._predictions = {}
        self._summary = {}
        try:
            self._dsobject.detect(image)
        except ds.DeepstackException as exc:
            _LOGGER.error("Depstack error : %s", exc)
            return

        self._predictions = self._dsobject.predictions.copy()

        if len(self._predictions) > 0:
            raw_confidences = ds.get_object_confidences(
                self._predictions, self._target)
            self._targets_confidences = [
                ds.format_confidence(confidence)
                for confidence in raw_confidences
            ]
            self._state = len(
                ds.get_confidences_above_threshold(self._targets_confidences,
                                                   self._confidence))
            if self._state > 0:
                self._last_detection = dt_util.now().strftime(DATETIME_FORMAT)
            self._summary = ds.get_objects_summary(self._predictions)
            self.fire_prediction_events(self._predictions, self._confidence)
            if hasattr(self, "_save_file_folder") and self._state > 0:
                self.save_image(image, self._predictions, self._target,
                                self._save_file_folder)
Example #3
0
def test_get_confidences_above_threshold():
    assert (len(
        ds.get_confidences_above_threshold(MOCK_OBJECT_CONFIDENCES,
                                           CONFIDENCE_THRESHOLD)) == 1)