TensorImage es la clase contenedora para el objeto Imagen. Cuando se usan utilidades de procesamiento de imágenes en la biblioteca TFLite.support, es común convertir objetos de imagen en tipos variantes a TensorImage al principio.
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 posibles fuentes de verdad: un Bitmap
de bits o un TensorBuffer
. TensorImage
mantiene el estado y solo convierte uno a otro cuando es necesario. Un caso de uso típico de TensorImage
es cargar primero una imagen de Bitmap
de bits, luego procesarla con ImageProcessor
y finalmente obtener el ByteBuffer
subyacente de TensorBuffer
e introducirlo en el intérprete de TFLite.
IMPORTANTE: para lograr el mejor rendimiento, TensorImage
evita copiar datos siempre que sea posible. Por lo tanto, no posee 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
TensorImage () 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
TensorImage estático | createFrom ( TensorImage src, tipo de datos tipo de datos) Crea una copia profunda de un TensorImage dado con el tipo de datos deseado. |
TensorImage estático | fromBitmap (mapa de bits de mapa de bits) |
mapa de bits | obtener mapa de bits () Devuelve una representación de Bitmap de bits de este TensorImage . |
Buffer de bytes | getBuffer () Devuelve una representación de ByteBuffer de este TensorImage con el tipo de datos esperado. |
ColorSpaceType | obtenerTipoEspacioColor () 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 | obtenerAltura () Obtiene la altura de la imagen. |
Imagen | obtenerImagenMedia () Devuelve una representación de Image de este TensorImage . |
TensorBuffer | getTensorBuffer () Devuelve una representación de TensorBuffer de este TensorImage con el tipo de datos esperado. |
En t | obtenerAncho () 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 de Bitmap de bits 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 | carga (píxeles flotantes [], forma int []) Carga una matriz flotante como píxeles RGB en este 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 ImageProperties específicos. |
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 de 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
. Usa TensorImage(DataType)
si prefieres otros tipos de datos.
TensorImage público ( 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 usar 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 en este TensorImage
.
Parámetros
tipo de datos | 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, 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ático público createFrom ( TensorImage src, DataType dataType)
Crea una copia profunda de un TensorImage
dado con el tipo de datos deseado.
Parámetros
origen | el TensorImage para copiar desde |
---|---|
tipo de datos | el tipo de datos esperado de TensorImage recién creado |
Devoluciones
- un
TensorImage
cuyos datos se copian desrc
y el tipo de datos esdataType
TensorImage estático público fromBitmap (mapa de bits de mapa de bits)
Inicializa un objeto TensorImage
de DataType.UINT8
con un Bitmap
de bits.
Parámetros
mapa de bits |
---|
mapa de bits público getBitmap ()
Devuelve una representación de Bitmap
de bits de este TensorImage
.
Se aplicarán conversió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 solo una referencia. NO MODIFICAR. No creamos una copia aquí por cuestiones de rendimiento, pero si es necesaria una modificación, haga una copia.
Devoluciones
- una referencia a un
Bitmap
de bits en la configuraciónARGB_8888
(el canal "A" siempre es opaco) o enALPHA_8
, según elColorSpaceType
de esteTensorBuffer
.
Lanza
IllegalStateExceptionIlegalStateException | si TensorImage nunca carga datos |
---|
bytebuffer público getbuffer ()
Devuelve una representación de ByteBuffer
de este TensorImage
con el tipo de datos esperado.
Se aplicarán conversión y sujeción numéricas si los datos almacenados son diferentes del tipo de datos de TensorImage
.
Importante: es solo una referencia. NO MODIFICAR. No creamos una copia aquí por cuestiones de rendimiento, pero si es necesaria una modificación, haga una copia.
Es esencialmente un atajo para getTensorBuffer().getBuffer()
.
Devoluciones
- una referencia a un
ByteBuffer
que contiene los datos de la imagen
Lanza
IllegalStateExceptionIlegalStateException | 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
IllegalStateExceptionIlegalStateException | 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
.
getHeight public int ()
Obtiene la altura de la imagen.
Lanza
IllegalStateExceptionIlegalStateException | 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 de Image
de este TensorImage
.
Este método solo funciona cuando TensorImage
está respaldado por una Image
, lo que significa que primero debe cargar una Image
a través de load(Image)
.
Importante: es solo una referencia. NO MODIFICAR. No creamos una copia aquí por cuestiones de rendimiento, pero si es necesaria una modificación, haga una copia.
Devoluciones
- una referencia a un
Bitmap
de bits en la configuraciónARGB_8888
(el canal "A" siempre es opaco) o enALPHA_8
, según elColorSpaceType
de esteTensorBuffer
.
Lanza
IllegalStateExceptionIlegalStateException | si TensorImage nunca carga datos |
---|
TensorBuffer público getTensorBuffer ()
Devuelve una representación de TensorBuffer
de este TensorImage
con el tipo de datos esperado.
Se aplicarán conversión y sujeción numéricas si los datos almacenados son diferentes del tipo de datos de TensorImage
.
Importante: es solo una referencia. NO MODIFICAR. No creamos una copia aquí por cuestiones de rendimiento, pero si es necesaria una modificación, haga una copia.
Devoluciones
- una referencia a un
TensorBuffer
que contiene los datos de la imagen
Lanza
IllegalStateExceptionIlegalStateException | si TensorImage nunca carga datos |
---|
getWidth público int ()
Obtiene el ancho de la imagen.
Lanza
IllegalStateExceptionIlegalStateException | 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
. Use 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án conversión y sujeción numéricas 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 |
---|---|
colorSpaceType |
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 de mapa de bits)
Carga un objeto de imagen de Bitmap
de bits en este TensorImage
.
Nota: si TensorImage
tiene un tipo de datos que no sea DataType.UINT8
, se aplicarán conversión y sujeción numéricas al llamar a getTensorBuffer()
y getBuffer()
, donde el Bitmap
de bits 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
se basará en el mapa de bits. Probablemente también modificará el mapa de bits. En este método, realizamos un enfoque de copia cero para ese mapa de bits, simplemente manteniendo su referencia. Use bitmap.copy(bitmap.getConfig(), true)
para crear una copia si es necesario.
Nota: para obtener el mejor rendimiento, cargue imágenes en la misma forma para evitar la reasignación de memoria.
Parámetros
mapa de bits |
---|
Lanza
Argumento de excepción ilegal | si el mapa de bitmap no está en ARGB_8888 |
---|
carga de vacío público (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án conversión y sujeción numéricas para convertir los valores en el 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, ya sea en forma (h, w, 3), o en forma (1, h, w, 3) |
Lanza
Argumento de excepción ilegal | si la forma no es ni (h, w, 3) ni (1, h, w, 3) |
---|
carga vacía pública (píxeles flotantes [], forma int [])
Carga una matriz flotante como píxeles RGB en este TensorImage
, que representa los píxeles del interior.
Nota: si TensorImage
tiene un tipo de datos que no sea DataType.FLOAT32
, se aplicarán conversión y sujeción numéricas al llamar a getTensorBuffer()
y getBuffer()
.
Parámetros
píxeles | los píxeles RGB que representan la imagen |
---|---|
forma | la forma de la imagen, ya sea en forma (h, w, 3), o en forma (1, h, w, 3) |
Lanza
Argumento de excepción ilegal | si la forma no es ni (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 ImageProperties
específicos.
Nota: si el tipo de datos del buffer
no coincide con el de este TensorImage
, se aplicarán conversión y sujeción numéricas 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 del TensorBuffer
no se usará para determinar el alto y el ancho de la imagen. Establezca las propiedades de la imagen a través ImageProperties
.
Nota: si el tipo de datos del buffer
no coincide con el de este TensorImage
, se aplicarán conversión y sujeción numéricas 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 de la imagen)
Carga un objeto de Image
en este TensorImage
.
El uso principal de este método es cargar un objeto de Image
como entrada de 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 la image
no es YUV_420_888
Parámetros
imagen |
---|