TensorImage

clase pública TensorImage

TensorImage es la clase wrapper para el objeto Image. Cuando se usan utilidades de procesamiento de imágenes en la biblioteca TFLite.support, primero se suelen convertir objetos de imagen en tipos de variantes a TensorImage.

En la actualidad, solo se admiten imágenes RGB y siempre se ignora el canal A.

Detalles del almacenamiento de datos: un objeto TensorImage puede tener 2 posibles fuentes de información: 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 con ImageProcessor y, por último, obtener el ByteBuffer subyacente de TensorBuffer y enviarlo al intérprete de TFLite.

IMPORTANTE: A fin de obtener el mejor rendimiento, TensorImage evita copiar datos siempre que es posible. Por lo tanto, no posee sus datos. Los llamadores no deben modificar los objetos de datos que se pasan a load(Bitmap) o load(TensorBuffer, ColorSpaceType).

IMPORTANTE: No se comprobó que todos los métodos sean seguros para los subprocesos.

Constructores públicos

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

Métodos públicos

TensorImage estático
createFrom(TensorImage src, DataType dataType)
Crea una copia profunda de un objeto TensorImage determinado con el tipo de datos deseado.
TensorImage estático
fromBitmap(mapa de bits de mapa de bits)
Inicializa un objeto TensorImage de DataType.UINT8 con un Bitmap .
Mapa de bits
getBitmap().
Muestra una representación Bitmap de este TensorImage.
ByteBuffer
getBuffer().
Muestra una representación de ByteBuffer de este TensorImage con el tipo de datos esperado.
ColorSpaceType
getColorSpaceType()
Obtiene el tipo de espacio de color de este TensorImage.
DataType
getDataType().
Obtiene el tipo de datos de este TensorImage.
int
getHeight()
Obtiene la altura de la imagen.
De imagen
getMediaImage()
Muestra una representación Image de este TensorImage.
TensorBuffer
getTensorBuffer()
Muestra una representación de TensorBuffer de este TensorImage con el tipo de datos esperado.
int
getWidth()
Obtiene el ancho de la imagen.
void
load(búfer TensorBuffer, ColorSpaceType colorSpaceType)
Carga una TensorBuffer que contiene valores de píxeles con el ColorSpaceType específico.
void
load(mapa de bits de mapa de bits)
Carga un objeto de imagen Bitmap en este TensorImage.
void
load(int[] píxeles, forma int[])
Carga un array int como píxeles RGB en este TensorImage, que representa los píxeles que contiene.
void
load(número de punto flotante[], forma int[])
Carga un array de números de punto flotante como píxeles RGB en este TensorImage, que representa los píxeles que hay dentro.
void
load(búfer ByteBuffer, ImageProperties imageProperties)
Carga una ByteBuffer que contiene valores de píxeles con el ImageProperties específico.
void
load(búfer TensorBuffer, ImageProperties imageProperties)
Carga una TensorBuffer que contiene valores de píxeles con el ImageProperties específico.
void
load(imagen)
Carga un objeto Image en este TensorImage.

Métodos heredados

Constructores públicos

public TensorImage ()

Inicializa un objeto TensorImage.

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

public TensorImage (dataType DataType)

Inicializa un objeto TensorImage con el tipo de datos especificado.

Cuando se obtiene un TensorBuffer o un ByteBuffer a partir de este TensorImage, como cuando se usa getTensorBuffer() y getBuffer(), los valores de los datos se convertirán al tipo de datos especificado.

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

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

Métodos públicos

estático público TensorImage createFrom (TensorImage src, DataType dataType)

Crea una copia profunda de un objeto TensorImage determinado con el tipo de datos deseado.

Parámetros
src la TensorImage desde la que se copiará
dataType el tipo de datos esperado del TensorImage recién creado
Devuelve
  • un objeto TensorImage cuyos datos se copian de src y el tipo de datos es dataType

publica estática estática TensorImage fromBitmap (mapa de bits de mapa de bits)

public Bitmap getBitmap ()

Muestra una representación Bitmap de este TensorImage.

Se aplicará la conversión numérica y la fijación si los datos almacenados no son de uint8.

Ten 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 solo una referencia. NO MODIFICAR. No creamos una copia aquí para resolver problemas de rendimiento, pero si es necesario hacer una modificación, haz una copia.

Devuelve
Arroja
IllegalStateException si TensorImage nunca carga datos.

public ByteBuffer getBuffer ()

Muestra una representación de ByteBuffer de este TensorImage con el tipo de datos esperado.

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

Importante: Es solo una referencia. NO MODIFICAR. No creamos una copia aquí para resolver problemas de rendimiento, pero si es necesario hacer una modificación, haz una copia.

En esencia, es un atajo para getTensorBuffer().getBuffer().

Devuelve
  • una referencia a un ByteBuffer que contiene los datos de la imagen
Arroja
IllegalStateException si TensorImage nunca carga datos.

público ColorSpaceType getColorSpaceType ()

Obtiene el tipo de espacio de color de este TensorImage.

Arroja
IllegalStateException si TensorImage nunca carga datos.

public DataType getDataType ()

Obtiene el tipo de datos de este TensorImage.

Devuelve

public int getHeight ()

Obtiene la altura de la imagen.

Arroja
IllegalStateException si TensorImage nunca carga datos.
IllegalArgumentException si los datos subyacentes se dañan

imagen pública getMediaImage ()

Muestra una representación Image de este TensorImage.

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

Importante: Es solo una referencia. NO MODIFICAR. No creamos una copia aquí para resolver problemas de rendimiento, pero si es necesario hacer una modificación, haz una copia.

Devuelve
Arroja
IllegalStateException si TensorImage nunca carga datos.

público TensorBuffer getTensorBuffer ()

Muestra una representación de TensorBuffer de este TensorImage con el tipo de datos esperado.

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

Importante: Es solo una referencia. NO MODIFICAR. No creamos una copia aquí para resolver problemas de rendimiento, pero si es necesario hacer una modificación, haz una copia.

Devuelve
  • una referencia a un TensorBuffer que contiene los datos de la imagen
Arroja
IllegalStateException si TensorImage nunca carga datos.

public int getWidth ()

Obtiene el ancho de la imagen.

Arroja
IllegalStateException si TensorImage nunca carga datos.
IllegalArgumentException si los datos subyacentes se dañan

public void load (búfer TensorBuffer, ColorSpaceType colorSpaceType)

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

Solo es compatible con ColorSpaceType.RGB y ColorSpaceType.GRAYSCALE. Usa load(TensorBuffer, ImageProperties) para otros tipos de espacios de color.

Nota: Si el tipo de datos de buffer no coincide con el de este TensorImage, se aplicarán restricciones y conversión numéricas cuando se llame a getTensorBuffer() y getBuffer().

Parámetros
búfer que se cargue el TensorBuffer. 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 GRAYSCALE.
colorSpaceType
Arroja
IllegalArgumentException si la forma del búfer no coincide con el tipo de espacio de color o si no se admite ese tipo de espacio de color

public void load (Mapa de bits de 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án restricciones y conversión numéricas cuando se llame a getTensorBuffer() y getBuffer(), donde Bitmap se convertirá en TensorBuffer.

Importante: Cuando cargues un mapa de bits, ya no MODIFICAS el mapa de bits desde el lado del emisor. El objeto TensorImage dependerá del mapa de bits. Es probable que también modifique el mapa de bits. En este método, realizamos un enfoque de copia cero para ese mapa de bits; para ello, simplemente mantenemos su referencia. Usa bitmap.copy(bitmap.getConfig(), true) para crear una copia si es necesario.

Nota: Para obtener el mejor rendimiento, carga las imágenes de la misma forma y evita la reasignación de memoria.

Parámetros
mapa de bits
Arroja
IllegalArgumentException si bitmap no está en ARGB_8888

public void load (int[] pixeles, int[] shape)

Carga un array int como píxeles RGB en este TensorImage, que representa los píxeles que contiene.

Nota: Se aplicarán restricciones y conversión numéricas para convertir los valores en el tipo de datos de este TensorImage cuando se llame a getTensorBuffer() y getBuffer().

Parámetros
píxeles los píxeles RGB que representan la imagen
shape la forma de la imagen, debe tener la forma (h, w, 3) o la forma (1, h, w, 3)
Arroja
IllegalArgumentException si la forma no es (h, w, 3) ni (1, h, w, 3)

public void load (float[] pixeles, int[] shape)

Carga un array de números de punto flotante como píxeles RGB en este TensorImage, que representa los píxeles que hay dentro.

Nota: Si TensorImage tiene un tipo de datos distinto de DataType.FLOAT32, se aplicarán restricciones y conversión numéricas cuando se llame a getTensorBuffer() y getBuffer().

Parámetros
píxeles los píxeles RGB que representan la imagen
shape la forma de la imagen, debe tener la forma (h, w, 3) o la forma (1, h, w, 3)
Arroja
IllegalArgumentException si la forma no es (h, w, 3) ni (1, h, w, 3)

public void load (búfer de ByteBuffer, ImageProperties de imageProperties)

Carga una ByteBuffer que contiene valores de píxeles con el ImageProperties específico.

Nota: Si el tipo de datos de buffer no coincide con el de este TensorImage, se aplicarán restricciones y conversión numéricas cuando se llame a getTensorBuffer() y getBuffer().

Parámetros
búfer
imageProperties
Arroja
IllegalArgumentException si el tamaño del búfer es menor que el de la imagen indicado por la altura, el ancho y el tipo de espacio de color de la imagen en ImageProperties

public void load (TensorBuffer, ImageProperties imageProperties)

Carga una TensorBuffer que contiene valores de píxeles con el ImageProperties específico.

No se usará la forma de TensorBuffer para determinar la altura y el ancho de la imagen. Configura las propiedades de la imagen a través de ImageProperties.

Nota: Si el tipo de datos de buffer no coincide con el de este TensorImage, se aplicarán restricciones y conversión numéricas cuando se llame a getTensorBuffer() y getBuffer().

Parámetros
búfer
imageProperties
Arroja
IllegalArgumentException si el tamaño del búfer es menor que el de la imagen indicado por la altura, el ancho y el tipo de espacio de color de la imagen en ImageProperties

public void load (Imagen de 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.

* @arroja IllegalArgumentException si el ImageFormat de image no es YUV_420_888.

Parámetros
imagen