TensorImage

TensorImage de clase pública

TensorImage es la clase contenedora para el objeto Imagen. Cuando se utilizan utilidades de procesamiento de imágenes en la biblioteca TFLite.support, al principio es común convertir objetos de imagen en tipos variantes a TensorImage.

Actualmente, solo se admiten imágenes RGB y el canal A siempre se ignora.

Detalles del almacenamiento de datos: un objeto TensorImage puede tener 2 fuentes potenciales de verdad: un Bitmap o un TensorBuffer . TensorImage mantiene el estado y solo convierte uno en otro cuando es necesario. Un caso de uso típico de TensorImage es cargar primero una imagen Bitmap , luego procesarla usando ImageProcessor y finalmente obtener el ByteBuffer subyacente de TensorBuffer e introducirlo en el intérprete TFLite.

IMPORTANTE: para lograr el mejor rendimiento, TensorImage evita copiar datos siempre que sea posible. Por tanto, no es propietario de sus datos. Las personas que llaman no deben modificar los objetos de datos que se pasan a load(Bitmap) o load(TensorBuffer, ColorSpaceType) .

IMPORTANTE: no se ha demostrado que todos los métodos sean seguros para subprocesos.

Constructores Públicos

TensorImagen ()
Inicializa un objeto TensorImage .
TensorImage ( tipo de datos tipo de datos )
Inicializa un objeto TensorImage con el tipo de datos especificado.

Métodos públicos

TensorImagen estática
createFrom ( TensorImage src, tipo de datos tipo de datos )
Crea una copia profunda de una TensorImage determinada con el tipo de datos deseado.
TensorImagen estática
fromBitmap (mapa de bits mapa de bits)
Inicializa un objeto TensorImage de DataType.UINT8 con un Bitmap .
mapa de bits
obtener mapa de bits ()
Devuelve una representación Bitmap de esta TensorImage .
Búfer de bytes
obtenerBuffer ()
Devuelve una representación ByteBuffer de esta TensorImage con el tipo de datos esperado.
Tipo de espacio de color
getColorSpaceType ()
Obtiene el tipo de espacio de color de este TensorImage .
Tipo de datos
obtener tipo de datos ()
Obtiene el tipo de datos de este TensorImage .
En t
obtener altura ()
Obtiene la altura de la imagen.
Imagen
obtenerImagenMedia ()
Devuelve una representación Image de este TensorImage .
TensorBuffer
obtenerTensorBuffer ()
Devuelve una representación TensorBuffer de esta TensorImage con el tipo de datos esperado.
En t
obtener ancho ()
Obtiene el ancho de la imagen.
vacío
cargar (búfer TensorBuffer , ColorSpaceType colorSpaceType)
Carga un TensorBuffer que contiene valores de píxeles con el ColorSpaceType específico.
vacío
cargar (mapa de bits mapa de bits)
Carga un objeto de imagen Bitmap en este TensorImage .
vacío
cargar (int[] píxeles, int[] forma)
Carga una matriz int como píxeles RGB en este TensorImage , que representa los píxeles del interior.
vacío
cargar (flotante[] píxeles, int[] forma)
Carga una matriz flotante como píxeles RGB en esta TensorImage , que representa los píxeles del interior.
vacío
cargar (búfer ByteBuffer , ImageProperties imageProperties)
Carga un ByteBuffer que contiene valores de píxeles con las ImageProperties específicas.
vacío
cargar (búfer TensorBuffer , ImageProperties imageProperties)
Carga un TensorBuffer que contiene valores de píxeles con las ImageProperties específicas.
vacío
cargar (Imagen imagen)
Carga un objeto Image en este TensorImage .

Métodos heredados

Constructores Públicos

TensorImage pública ()

Inicializa un objeto TensorImage .

Nota: el tipo de datos de este TensorImage es DataType.UINT8 . Utilice TensorImage(DataType) si se prefieren otros tipos de datos.

TensorImage pública (tipo de datos tipo de datos )

Inicializa un objeto TensorImage con el tipo de datos especificado.

Al obtener un TensorBuffer o un ByteBuffer de este TensorImage , como al usar getTensorBuffer() y getBuffer() , los valores de datos se convertirán al tipo de datos especificado.

Nota: la forma de una TensorImage no es fija. Se puede ajustar a la forma de la imagen que se carga en este TensorImage .

Parámetros
tipo de datos el tipo de datos esperado del TensorBuffer resultante. El tipo siempre es fijo durante la vida útil de TensorImage . Para convertir el tipo de datos, use createFrom(TensorImage, DataType) para crear una copia y convertir el tipo de datos al mismo tiempo.

Métodos públicos

TensorImage estática pública createFrom ( TensorImage src, tipo de datos tipo de datos )

Crea una copia profunda de una TensorImage determinada con el tipo de datos deseado.

Parámetros
src la TensorImage para copiar desde
tipo de datos el tipo de datos esperado de TensorImage recién creado
Devoluciones
  • una TensorImage cuyos datos se copian de src y el tipo de datos es dataType

TensorImage estática pública de Bitmap (mapa de bits de mapa de bits)

mapa de bits público getBitmap ()

Devuelve una representación Bitmap de esta TensorImage .

Se aplicarán fundición y sujeción numéricas si los datos almacenados no son uint8.

Tenga en cuenta que la forma confiable de obtener píxeles de un mapa de bits ALPHA_8 es usar copyPixelsToBuffer . Los métodos de mapa de bits como `setPixels()` y `getPixels` no funcionan.

Importante: es sólo una referencia. NO MODIFICAR. No creamos una copia aquí por motivos de rendimiento, pero si es necesario realizar modificaciones, haga una copia.

Devoluciones
  • una referencia a un Bitmap en la configuración ARGB_8888 (el canal "A" siempre es opaco) o en ALPHA_8 , dependiendo del ColorSpaceType de este TensorBuffer .
Lanza
Excepción de estado ilegal si TensorImage nunca carga datos

público ByteBuffer getBuffer ()

Devuelve una representación ByteBuffer de esta TensorImage con el tipo de datos esperado.

Se aplicará conversión y sujeción numérica si los datos almacenados son diferentes del tipo de datos de TensorImage .

Importante: es sólo una referencia. NO MODIFICAR. No creamos una copia aquí por motivos de rendimiento, pero si es necesario realizar modificaciones, haga una copia.

Es esencialmente un atajo para getTensorBuffer().getBuffer() .

Devoluciones
  • una referencia a un ByteBuffer que contiene los datos de la imagen
Lanza
Excepción de estado ilegal si TensorImage nunca carga datos

tipo de espacio de color público gettipo de espacio de color ()

Obtiene el tipo de espacio de color de este TensorImage .

Lanza
Excepción de estado ilegal si TensorImage nunca carga datos

tipo de datos público getDataType ()

Obtiene el tipo de datos de este TensorImage .

Devoluciones

público int getHeight ()

Obtiene la altura de la imagen.

Lanza
Excepción de estado ilegal si TensorImage nunca carga datos
Argumento de excepción ilegal si los datos subyacentes están dañados

Imagen pública getMediaImage ()

Devuelve una representación Image de este TensorImage .

Este método solo funciona cuando TensorImage está respaldado por una Image , lo que significa que primero debes cargar una Image a través de load(Image) .

Importante: es sólo una referencia. NO MODIFICAR. No creamos una copia aquí por motivos de rendimiento, pero si es necesario realizar modificaciones, haga una copia.

Devoluciones
  • una referencia a un Bitmap en la configuración ARGB_8888 (el canal "A" siempre es opaco) o en ALPHA_8 , dependiendo del ColorSpaceType de este TensorBuffer .
Lanza
Excepción de estado ilegal si TensorImage nunca carga datos

público TensorBuffer getTensorBuffer ()

Devuelve una representación TensorBuffer de esta TensorImage con el tipo de datos esperado.

Se aplicará conversión y sujeción numérica si los datos almacenados son diferentes del tipo de datos de TensorImage .

Importante: es sólo una referencia. NO MODIFICAR. No creamos una copia aquí por motivos de rendimiento, pero si es necesario realizar modificaciones, haga una copia.

Devoluciones
  • una referencia a un TensorBuffer que contiene los datos de la imagen
Lanza
Excepción de estado ilegal si TensorImage nunca carga datos

público int getWidth ()

Obtiene el ancho de la imagen.

Lanza
Excepción de estado ilegal si TensorImage nunca carga datos
Argumento de excepción ilegal si los datos subyacentes están dañados

carga vacía pública (búfer TensorBuffer , ColorSpaceType colorSpaceType)

Carga un TensorBuffer que contiene valores de píxeles con el ColorSpaceType específico.

Solo admite ColorSpaceType.RGB y ColorSpaceType.GRAYSCALE . Utilice load(TensorBuffer, ImageProperties) para otros tipos de espacios de color.

Nota: si el tipo de datos del buffer no coincide con el de este TensorImage , se aplicará la conversión y sujeción numérica al llamar a getTensorBuffer() y getBuffer() .

Parámetros
buffer el TensorBuffer que se va a cargar. Su forma debe ser (h, w, 3) o (1, h, w, 3) para imágenes RGB, y (h, w) o (1, h, w) para imágenes en ESCALA DE GRISES.
colorTipo de espacio
Lanza
Argumento de excepción ilegal si la forma del búfer no coincide con el tipo de espacio de color, o si el tipo de espacio de color no es compatible

carga vacía pública (mapa de bits mapa de bits)

Carga un objeto de imagen Bitmap en este TensorImage .

Nota: si TensorImage tiene un tipo de datos distinto de DataType.UINT8 , se aplicará la conversión y sujeción numérica al llamar a getTensorBuffer() y getBuffer() , donde el Bitmap se convertirá en un TensorBuffer .

Importante: al cargar un mapa de bits, NO MODIFIQUE más el mapa de bits desde el lado de la persona que llama. El objeto TensorImage dependerá del mapa de bits. Probablemente también modificará el mapa de bits. En este método, realizamos un método de copia cero para ese mapa de bits, simplemente manteniendo su referencia. Utilice bitmap.copy(bitmap.getConfig(), true) para crear una copia si es necesario.

Nota: para obtener el mejor rendimiento, cargue las imágenes con la misma forma para evitar la reasignación de memoria.

Parámetros
mapa de bits
Lanza
Argumento de excepción ilegal si bitmap no está en ARGB_8888

carga vacía pública (int[] píxeles, int[] forma)

Carga una matriz int como píxeles RGB en este TensorImage , que representa los píxeles del interior.

Nota: se aplicará conversión y sujeción numéricas para convertir los valores al tipo de datos de este TensorImage al llamar a getTensorBuffer() y getBuffer() .

Parámetros
píxeles los píxeles RGB que representan la imagen
forma la forma de la imagen, debe estar en forma (h, w, 3) o en forma (1, h, w, 3)
Lanza
Argumento de excepción ilegal si la forma no es (h, w, 3) ni (1, h, w, 3)

carga vacía pública (flotante [] píxeles, forma int [])

Carga una matriz flotante como píxeles RGB en esta TensorImage , que representa los píxeles del interior.

Nota: si TensorImage tiene un tipo de datos distinto de DataType.FLOAT32 , se aplicará la conversión y sujeción numérica al llamar a getTensorBuffer() y getBuffer() .

Parámetros
píxeles los píxeles RGB que representan la imagen
forma la forma de la imagen, debe estar en forma (h, w, 3) o en forma (1, h, w, 3)
Lanza
Argumento de excepción ilegal si la forma no es (h, w, 3) ni (1, h, w, 3)

carga vacía pública (búfer ByteBuffer , ImageProperties imageProperties)

Carga un ByteBuffer que contiene valores de píxeles con las ImageProperties específicas.

Nota: si el tipo de datos del buffer no coincide con el de este TensorImage , se aplicará la conversión y sujeción numérica al llamar a getTensorBuffer() y getBuffer() .

Parámetros
buffer
propiedades de la imagen
Lanza
Argumento de excepción ilegal si el tamaño del búfer es menor que el tamaño de la imagen indicado por la altura, el ancho y el tipo de espacio de color de la imagen en ImageProperties

carga vacía pública (búfer TensorBuffer , ImageProperties imageProperties)

Carga un TensorBuffer que contiene valores de píxeles con las ImageProperties específicas.

La forma de TensorBuffer no se utilizará para determinar la altura y el ancho de la imagen. Establezca las propiedades de la imagen a través de ImageProperties .

Nota: si el tipo de datos del buffer no coincide con el de este TensorImage , se aplicará la conversión y sujeción numérica al llamar a getTensorBuffer() y getBuffer() .

Parámetros
buffer
propiedades de la imagen
Lanza
Argumento de excepción ilegal si el tamaño del búfer es menor que el tamaño de la imagen indicado por la altura, el ancho y el tipo de espacio de color de la imagen en ImageProperties

carga de vacío público (Imagen imagen)

Carga un objeto Image en este TensorImage .

El uso principal de este método es cargar un objeto Image como entrada del modelo en https://www.tensorflow.org/lite/inference_with_metadata/task_library/overview . TensorImage respaldado por Image no es compatible con ImageProcessor .

* @throws IllegalArgumentException si el ImageFormat de image no es YUV_420_888

Parámetros
imagen