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) |
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. |
---|
Lanza
Argumento de excepción ilegal | si dataType no es DataType.UINT8 ni DataType.FLOAT32 |
---|
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 desrc
y el tipo de datos esdataType
TensorImage estática pública de Bitmap (mapa de bits de mapa de bits)
Inicializa un objeto TensorImage
de DataType.UINT8
con un Bitmap
.
Parámetros
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ónARGB_8888
(el canal "A" siempre es opaco) o enALPHA_8
, dependiendo delColorSpaceType
de esteTensorBuffer
.
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
- un tipo de datos. Actualmente, solo se admiten
DataType.UINT8
yDataType.FLOAT32
.
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ónARGB_8888
(el canal "A" siempre es opaco) o enALPHA_8
, dependiendo delColorSpaceType
de esteTensorBuffer
.
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 |
---|