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.
Consulta también
Constructores públicos
TensorImage()
Inicializa un objeto
TensorImage . |
|
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)
|
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. |
---|
Arroja
IllegalArgumentException | si dataType no es DataType.UINT8 ni DataType.FLOAT32
|
---|
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 desrc
y el tipo de datos esdataType
publica estática estática TensorImage fromBitmap (mapa de bits de mapa de bits)
Inicializa un objeto TensorImage
de DataType.UINT8
con un Bitmap
.
Parámetros
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
- una referencia a un
Bitmap
en la configuración deARGB_8888
(el canal "A" siempre es opaco) o enALPHA_8
, según elColorSpaceType
de estaTensorBuffer
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
- un tipo de datos. Actualmente, solo se admiten
DataType.UINT8
yDataType.FLOAT32
.
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
- una referencia a un
Bitmap
en la configuración deARGB_8888
(el canal "A" siempre es opaco) o enALPHA_8
, según elColorSpaceType
de estaTensorBuffer
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 |
---|