content: /*
   *    Copyright (C) 2017 MINDORKS NEXTGEN PRIVATE LIMITED
   *
   *    Licensed under the Apache License, Version 2.0 (the "License");
   *    you may not use this file except in compliance with the License.
   *    You may obtain a copy of the License at
   *
   *        http://www.apache.org/licenses/LICENSE-2.0
   *
   *    Unless required by applicable law or agreed to in writing, software
   *    distributed under the License is distributed on an "AS IS" BASIS,
   *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   *    See the License for the specific language governing permissions and
   *    limitations under the License.
   */
  
  package com.mindorks.tensorflowexample;
  
  import android.graphics.Bitmap;
  import android.graphics.RectF;
  
  import java.util.List;
  
  /**
   * Created by amitshekhar on 06/03/17.
   */
  
  /**
   * Generic interface for interacting with different recognition engines.
   */
  public interface Classifier {
      /**
       * An immutable result returned by a Classifier describing what was recognized.
       */
      public class Recognition {
          /**
           * A unique identifier for what has been recognized. Specific to the class, not the instance of
           * the object.
           */
          private final String id;
  
          /**
           * Display name for the recognition.
           */
          private final String title;
  
          /**
           * A sortable score for how good the recognition is relative to others. Higher should be better.
           */
          private final Float confidence;
  
          /**
           * Optional location within the source image for the location of the recognized object.
           */
          private RectF location;
  
          public Recognition(
                  final String id, final String title, final Float confidence, final RectF location) {
              this.id = id;
              this.title = title;
              this.confidence = confidence;
              this.location = location;
          }
  
          public String getId() {
              return id;
          }
  
          public String getTitle() {
              return title;
          }
  
          public Float getConfidence() {
              return confidence;
          }
  
          public RectF getLocation() {
              return new RectF(location);
          }
  
          public void setLocation(RectF location) {
              this.location = location;
          }
  
          @Override
          public String toString() {
              String resultString = "";
              if (id != null) {
                  resultString += "[" + id + "] ";
              }
  
              if (title != null) {
                  resultString += title + " ";
              }
  
              if (confidence != null) {
                  resultString += String.format("(%.1f%%) ", confidence * 100.0f);
              }
  
              if (location != null) {
                  resultString += location + " ";
              }
  
              return resultString.trim();
          }
      }
  
      List<Recognition> recognizeImage(Bitmap bitmap);
  
      void enableStatLogging(final boolean debug);
  
      String getStatString();
  
      void close();
  }
  
  