class_docstr: Class that performs image classification on images.
  
  The API expects a TFLite model with optional, but strongly recommended,
  TFLite Model Metadata.
  
  Input tensor:
    (kTfLiteUInt8/kTfLiteFloat32)
    - image input of size `[batch x height x width x channels]`.
    - batch inference is not supported (`batch` is required to be 1).
    - only RGB inputs are supported (`channels` is required to be 3).
    - if type is kTfLiteFloat32, NormalizationOptions are required to be
      attached to the metadata for input normalization.
  At least one output tensor with:
    (kTfLiteUInt8/kTfLiteFloat32)
    - `N `classes and either 2 or 4 dimensions, i.e. `[1 x N]` or
      `[1 x 1 x 1 x N]`
    - optional (but recommended) label map(s) as AssociatedFiles with type
      TENSOR_AXIS_LABELS, containing one label per line. The first such
      AssociatedFile (if any) is used to fill the `class_name` field of the
      results. The `display_name` field is filled from the AssociatedFile (if
      any) whose locale matches the `display_names_locale` field of the
      `ImageClassifierOptions` used at creation time ("en" by default, i.e.
      English). If none of these are available, only the `index` field of the
      results will be filled.
    - optional score calibration can be attached using ScoreCalibrationOptions
      and an AssociatedFile with type TENSOR_AXIS_SCORE_CALIBRATION. See
      metadata_schema.fbs [1] for more details.
  
  An example of such model can be found at:
  https://tfhub.dev/bohemian-visual-recognition-alliance/lite-model/models/mushroom-identification_v1/1
  
  [1]:
  https://github.com/google/mediapipe/blob/6cdc6443b6a7ed662744e2a2ce2d58d9c83e6d6f/mediapipe/tasks/metadata/metadata_schema.fbs#L456
class_docstr_tok: ["Class","that","performs","image","classification","on","images",".","The","API","expects","a","TFLite","model","with","optional",",","but","strongly","recommended",",","TFLite","Model","Metadata",".","Input","tensor",":","(","kTfLiteUInt8\/kTfLiteFloat32",")","-","image","input","of","size","`","[","batch","x","height","x","width","x","channels","]","`",".","-","batch","inference","is","not","supported","(","`","batch","`","is","required","to","be","1",")",".","-","only","RGB","inputs","are","supported","(","`","channels","`","is","required","to","be","3",")",".","-","if","type","is","kTfLiteFloat32",",","NormalizationOptions","are","required","to","be","attached","to","the","metadata","for","input","normalization",".","At","least","one","output","tensor","with",":","(","kTfLiteUInt8\/kTfLiteFloat32",")","-","`","N","`","classes","and","either","2","or","4","dimensions",",","i.e",".","`","[","1","x","N","]","`","or","`","[","1","x","1","x","1","x","N","]","`","-","optional","(","but","recommended",")","label","map","(","s",")","as","AssociatedFiles","with","type","TENSOR_AXIS_LABELS",",","containing","one","label","per","line",".","The","first","such","AssociatedFile","(","if","any",")","is","used","to","fill","the","`","class_name","`","field","of","the","results",".","The","`","display_name","`","field","is","filled","from","the","AssociatedFile","(","if","any",")","whose","locale","matches","the","`","display_names_locale","`","field","of","the","`","ImageClassifierOptions","`","used","at","creation","time","(","``","en","''","by","default",",","i.e",".","English",")",".","If","none","of","these","are","available",",","only","the","`","index","`","field","of","the","results","will","be","filled",".","-","optional","score","calibration","can","be","attached","using","ScoreCalibrationOptions","and","an","AssociatedFile","with","type","TENSOR_AXIS_SCORE_CALIBRATION",".","See","metadata_schema.fbs","[","1","]","for","more","details",".","An","example","of","such","model","can","be","found","at",":","https",":","\/\/tfhub.dev\/bohemian-visual-recognition-alliance\/lite-model\/models\/mushroom-identification_v1\/1","[","1","]",":","https",":","\/\/github.com\/google\/mediapipe\/blob\/6cdc6443b6a7ed662744e2a2ce2d58d9c83e6d6f\/mediapipe\/tasks\/metadata\/metadata_schema.fbs","#","L456"]
docstr: Performs image classification on the provided MediaPipe Image.
  
  Args:
    image: MediaPipe Image.
    image_processing_options: Options for image processing.
  
  Returns:
    A classification result object that contains a list of classifications.
  
  Raises:
    ValueError: If any of the input arguments is invalid.
    RuntimeError: If image classification failed to run.
docstr_tok: ["Performs","image","classification","on","the","provided","MediaPipe","Image",".","Args",":","image",":","MediaPipe","Image",".","image_processing_options",":","Options","for","image","processing",".","Returns",":","A","classification","result","object","that","contains","a","list","of","classifications",".","Raises",":","ValueError",":","If","any","of","the","input","arguments","is","invalid",".","RuntimeError",":","If","image","classification","failed","to","run","."]
code: def classify(
      self,
      image: image_module.Image,
      image_processing_options: Optional[
          _ImageProcessingOptions
      ] = None,
  ) -> ImageClassifierResult:
      """Performs image classification on the provided MediaPipe Image.
  
      Args:
        image: MediaPipe Image.
        image_processing_options: Options for image processing.
  
      Returns:
        A classification result object that contains a list of classifications.
  
      Raises:
        ValueError: If any of the input arguments is invalid.
        RuntimeError: If image classification failed to run.
      """
      normalized_rect = self.convert_to_normalized_rect(
          image_processing_options, image
      )
      output_packets = self._process_image_data(
          {
              _IMAGE_IN_STREAM_NAME: packet_creator.create_image(image),
              _NORM_RECT_STREAM_NAME: packet_creator.create_proto(
                  normalized_rect.to_pb2()
              ),
          }
      )
  
      classification_result_proto = (
          classifications_pb2.ClassificationResult()
      )
      classification_result_proto.CopyFrom(
          packet_getter.get_proto(
              output_packets[_CLASSIFICATIONS_STREAM_NAME]
          )
      )
  
      return ImageClassifierResult.create_from_pb2(
          classification_result_proto
      )
  
imports: import dataclasses
  from typing import Callable, Mapping, Optional, List
  from mediapipe.python import packet_creator
  from mediapipe.python import packet_getter
  from mediapipe.python._framework_bindings import image
  from mediapipe.python._framework_bindings import packet
  from mediapipe.tasks.cc.components.containers.proto import classifications_pb2
  from mediapipe.tasks.cc.components.processors.proto import classifier_options_pb2
  from mediapipe.tasks.cc.vision.image_classifier.proto import image_classifier_graph_options_pb2
  from mediapipe.tasks.python.components.containers import classification_result
  from mediapipe.tasks.python.components.containers import rect
  from mediapipe.tasks.python.core import base_options
  from mediapipe.tasks.python.core import task_info
  from mediapipe.tasks.python.core.optional_dependencies import doc_controls
  from mediapipe.tasks.python.vision.core import base_vision_task_api
  from mediapipe.tasks.python.vision.core import image_processing_options
  from mediapipe.tasks.python.vision.core import vision_task_running_mode
label_desc: Use image node_id 3 for calling the ImageClassifier obj's underlying member method code with example usage: obj.classify(image, image_processing_options) and returns: ImageClassifierResult