TensorImage è la classe wrapper per l'oggetto Image. Quando si utilizzano util di elaborazione delle immagini nella libreria TFLite.support, è frequente convertire inizialmente in TensorImage gli oggetti immagine nei tipi di varianti.
Al momento sono supportate solo le immagini RGB e il canale A viene sempre ignorato.
Dettagli sull'archiviazione dei dati: un oggetto TensorImage può avere due potenziali fonti di dati: Bitmap o TensorBuffer. TensorImage mantiene lo stato e converte l'uno nell'altro solo quando necessario. Un caso d'uso tipico di TensorImage
consiste nel caricare prima un'immagine Bitmap, quindi elaborarla utilizzando ImageProcessor e infine ottenere il valore ByteBuffer sottostante di TensorBuffer
e trasmetterlo all'interprete TFLite.
IMPORTANTE: per ottenere le migliori prestazioni, TensorImage evita di copiare i dati quando è possibile. Di conseguenza, non possiede i dati. I chiamanti non devono modificare gli oggetti dati che vengono passati a load(Bitmap) o load(TensorBuffer, ColorSpaceType).
IMPORTANTE: tutti i metodi non sono sicuri per i thread.
Argomenti correlati
Costruttori pubblici
|
TensorImage()
Inizializza un oggetto
TensorImage. |
|
|
TensorImage(Tipo di dati DataType)
Inizializza un oggetto
TensorImage con il tipo di dati specificato. |
Metodi pubblici
| statico TensorImage |
createFrom(TensorImage src, DataType dataType)
Crea una copia approfondita di un determinato
TensorImage con il tipo di dati desiderato. |
| statico TensorImage |
fromBitmap(bitmap bitmap)
|
| Bitmap |
getBitmap()
Restituisce una rappresentazione
Bitmap di questo TensorImage. |
| ByteBuffer |
getBuffer()
Restituisce una rappresentazione
ByteBuffer di questo TensorImage con il tipo di dati previsto. |
| ColorSpaceType |
getColorSpaceType()
Recupera il tipo di spazio colore di
TensorImage. |
| DataType |
getDataType()
Recupera il tipo di dati di
TensorImage. |
| int |
getHeight()
Restituisce l'altezza dell'immagine.
|
| Immagine |
getMediaImage()
Restituisce una rappresentazione
Image di questo TensorImage. |
| TensorBuffer |
getTensorBuffer()
Restituisce una rappresentazione
TensorBuffer di questo TensorImage con il tipo di dati previsto. |
| int |
getWidth()
Restituisce la larghezza dell'immagine.
|
| void |
load(buffer TensorBuffer, ColorSpaceType colorSpaceType)
Carica un elemento
TensorBuffer contenente valori di pixel con il valore ColorSpaceType specifico. |
| void |
load(bitmap bitmap)
Carica un oggetto immagine
Bitmap in questo TensorImage. |
| void |
load(int[] pixel, int[] forma)
Carica un array int come pixel RGB in questo
TensorImage, che rappresenta i pixel all'interno. |
| void |
load(float[] pixel, int[] forma)
Carica un array mobile come pixel RGB in questo
TensorImage, che rappresenta i pixel all'interno. |
| void |
load(buffer ByteBuffer, ImageProperties imageProperties)
Carica un elemento
ByteBuffer contenente valori di pixel con il valore ImageProperties specifico. |
| void |
load(buffer TensorBuffer, ImageProperties imageProperties)
Carica un elemento
TensorBuffer contenente valori di pixel con il valore ImageProperties specifico. |
| void |
load(immagine immagine)
Carica un oggetto
Image in questo TensorImage. |
Metodi ereditati
Costruttori pubblici
pubblica TensorImage ()
Inizializza un oggetto TensorImage.
Nota: il tipo di dati di questo TensorImage è DataType.UINT8. Utilizza TensorImage(DataType) se preferisci altri tipi di dati.
pubblico TensorImage (tipo di dati DataType)
Inizializza un oggetto TensorImage con il tipo di dati specificato.
Quando ottieni un valore TensorBuffer o ByteBuffer da questo valore TensorImage, ad esempio utilizzando getTensorBuffer() e getBuffer(), i valori dei dati verranno convertiti nel tipo di dati specificato.
Nota: la forma di TensorImage non è fissa. Può essere regolato in base alla forma dell'immagine caricata in questo TensorImage.
Parametri
| dataType | il tipo di dati previsto dell'oggetto TensorBuffer risultante. Il tipo è sempre fisso per tutta la durata di TensorImage. Per convertire il tipo di dati, utilizza
createFrom(TensorImage, DataType) per creare una copia e convertire contemporaneamente il tipo di dati. |
|---|
Lanci
| IllegalArgumentException | se dataType non è né DataType.UINT8 né DataType.FLOAT32
|
|---|
Metodi pubblici
pubblico statico TensorImage createFrom (TensorImage src, DataType dataType)
Crea una copia approfondita di un determinato TensorImage con il tipo di dati desiderato.
Parametri
| src | il TensorImage da cui copiare |
|---|---|
| dataType | il tipo di dati previsto per le istanze TensorImage |
Ritorni
- un
TensorImagei cui dati vengono copiati dasrce il tipo di dati èdataType
statica pubblica TensorImage fromBitmap (bitmap bitmap)
Inizializza un oggetto TensorImage di DataType.UINT8 con un Bitmap .
Parametri
| bitmap |
|---|
pubblica Bitmap getBitmap ()
Restituisce una rappresentazione Bitmap di questo TensorImage.
Se i dati memorizzati non sono uint8, verranno applicati i metodi di fusione e blocco numerici.
Tieni presente che il modo affidabile per ottenere i pixel da una bitmap ALPHA_8 è utilizzare copyPixelsToBuffer. I metodi bitmap come "setPixels()" e "getPixels" non funzionano.
Importante: si tratta solo di un riferimento. NON MODIFICARE. Non creiamo una copia qui per problemi di prestazioni, ma se sono necessarie modifiche, creane una copia.
Ritorni
- un riferimento a
Bitmapnella configurazioneARGB_8888(il canale "A" è sempre opaco) o inALPHA_8, a seconda diColorSpaceTypedi questoTensorBuffer.
Lanci
| IllegalStateException | se TensorImage non carica mai dati
|
|---|
pubblica ByteBuffer getBuffer ()
Restituisce una rappresentazione ByteBuffer di questo TensorImage con il tipo di dati previsto.
Se i dati memorizzati sono diversi dal tipo di dati di TensorImage, verranno applicati i metodi di fusione e blocco numerici.
Importante: si tratta solo di un riferimento. NON MODIFICARE. Non creiamo una copia qui per problemi di prestazioni, ma se sono necessarie modifiche, creane una copia.
È essenzialmente una scorciatoia per getTensorBuffer().getBuffer().
Ritorni
- un riferimento a
ByteBufferche contiene i dati dell'immagine
Lanci
| IllegalStateException | se TensorImage non carica mai dati
|
|---|
pubblico ColorSpaceType getColorSpaceType ()
Recupera il tipo di spazio colore di TensorImage.
Lanci
| IllegalStateException | se TensorImage non carica mai dati
|
|---|
pubblico DataType getDataType ()
Recupera il tipo di dati di TensorImage.
Ritorni
- un tipo di dati. Attualmente sono supportati solo
DataType.UINT8eDataType.FLOAT32.
pubblica int getHeight ()
Restituisce l'altezza dell'immagine.
Lanci
| IllegalStateException | se TensorImage non carica mai dati |
|---|---|
| IllegalArgumentException | se i dati sottostanti sono danneggiati |
pubblica Immagine getMediaImage ()
Restituisce una rappresentazione Image di questo TensorImage.
Questo metodo funziona solo quando TensorImage è supportato da Image, il che significa che devi prima caricare un elemento Image tramite load(Image).
Importante: si tratta solo di un riferimento. NON MODIFICARE. Non creiamo una copia qui per problemi di prestazioni, ma se sono necessarie modifiche, creane una copia.
Ritorni
- un riferimento a
Bitmapnella configurazioneARGB_8888(il canale "A" è sempre opaco) o inALPHA_8, a seconda diColorSpaceTypedi questoTensorBuffer.
Lanci
| IllegalStateException | se TensorImage non carica mai dati
|
|---|
pubblico TensorBuffer getTensorBuffer ()
Restituisce una rappresentazione TensorBuffer di questo TensorImage con il tipo di dati previsto.
Se i dati memorizzati sono diversi dal tipo di dati di TensorImage, verranno applicati i metodi di fusione e blocco numerici.
Importante: si tratta solo di un riferimento. NON MODIFICARE. Non creiamo una copia qui per problemi di prestazioni, ma se sono necessarie modifiche, creane una copia.
Ritorni
- un riferimento a
TensorBufferche contiene i dati dell'immagine
Lanci
| IllegalStateException | se TensorImage non carica mai dati
|
|---|
Public int getWidth ()
Restituisce la larghezza dell'immagine.
Lanci
| IllegalStateException | se TensorImage non carica mai dati |
|---|---|
| IllegalArgumentException | se i dati sottostanti sono danneggiati |
Public void load (buffer TensorBuffer, ColorSpaceType colorSpaceType)
Carica un elemento TensorBuffer contenente valori di pixel con il valore ColorSpaceType specifico.
Supporta solo ColorSpaceType.RGB e ColorSpaceType.GRAYSCALE. Utilizza load(TensorBuffer, ImageProperties) per altri tipi di spazio colore.
Nota: se il tipo di dati di buffer non corrisponde a quello di questo TensorImage,
la trasmissione e il blocco numerici verranno applicati quando si chiamano getTensorBuffer() e getBuffer().
Parametri
| buffer | l'elemento TensorBuffer da caricare. La sua forma dovrebbe essere (h, w, 3) o (1, h, w, 3) per le immagini RGB e (h, w) o (1, h, w) per le immagini in SCALA DI GRIGIO |
|---|---|
| colorSpaceType |
Lanci
| IllegalArgumentException | se la forma del buffer non corrisponde al tipo di spazio colore o se il tipo di spazio colore non è supportato |
|---|
pubblica void carica (bitmap bitmap)
Carica un oggetto immagine Bitmap in questo TensorImage.
Nota: se TensorImage ha un tipo di dati diverso da DataType.UINT8, la trasmissione e il blocco numerici verranno applicati quando chiami getTensorBuffer() e getBuffer(), dove Bitmap verrà convertito in TensorBuffer.
Importante: quando carichi una bitmap, NON MODIFICARE più la bitmap dal lato chiamante. L'oggetto TensorImage si baserà sulla bitmap. Probabilmente modificherà anche la bitmap.
In questo metodo, eseguiamo un approccio "zero-copy" per la bitmap in questione, tenendo semplicemente il suo riferimento. Se necessario, utilizza bitmap.copy(bitmap.getConfig(), true) per creare una copia.
Nota: per ottenere prestazioni ottimali, carica le immagini nella stessa forma per evitare la riallocazione della memoria.
Parametri
| bitmap |
|---|
Lanci
| IllegalArgumentException | se bitmap non è in ARGB_8888
|
|---|
pubblica void carica (int[] pixel, int[] forma)
Carica un array int come pixel RGB in questo TensorImage, che rappresenta i pixel all'interno.
Nota: la trasmissione e il blocco numerici verranno applicati per convertire i valori nel tipo di dati di questo
TensorImage quando chiami getTensorBuffer() e getBuffer().
Parametri
| pixel | i pixel RGB che rappresentano l'immagine |
|---|---|
| shape | la forma dell'immagine, dovrebbe essere nella forma (h, w, 3) o nella forma (1, h, w, 3) |
Lanci
| IllegalArgumentException | se la forma non è né (h, w, 3) né (1, h, w, 3) |
|---|
pubblica void carica (float[] pixel, int[] forma)
Carica un array mobile come pixel RGB in questo TensorImage, che rappresenta i pixel all'interno.
Nota: se TensorImage ha un tipo di dati diverso da DataType.FLOAT32, la trasmissione e il blocco numerici verranno applicati quando chiami getTensorBuffer() e getBuffer().
Parametri
| pixel | i pixel RGB che rappresentano l'immagine |
|---|---|
| shape | la forma dell'immagine, dovrebbe essere nella forma (h, w, 3) o nella forma (1, h, w, 3) |
Lanci
| IllegalArgumentException | se la forma non è né (h, w, 3) né (1, h, w, 3) |
|---|
Public void load (buffer ByteBuffer, ImageProperties imageProperties)
Carica un elemento ByteBuffer contenente valori di pixel con il valore ImageProperties specifico.
Nota: se il tipo di dati di buffer non corrisponde a quello di questo TensorImage,
la trasmissione e il blocco numerici verranno applicati quando si chiamano getTensorBuffer() e getBuffer().
Parametri
| buffer | |
|---|---|
| imageProperties |
Lanci
| IllegalArgumentException | se la dimensione del buffer è inferiore a quella dell'immagine indicata dall'altezza, dalla larghezza e dal tipo di spazio colore dell'immagine in ImageProperties
|
|---|
Public void carica (buffer TensorBuffer, ImageProperties imageProperties)
Carica un elemento TensorBuffer contenente valori di pixel con il valore ImageProperties specifico.
La forma dell'elemento TensorBuffer non verrà utilizzata per determinare l'altezza e la larghezza dell'immagine.
Imposta le proprietà dell'immagine tramite ImageProperties.
Nota: se il tipo di dati di buffer non corrisponde a quello di questo TensorImage,
la trasmissione e il blocco numerici verranno applicati quando si chiamano getTensorBuffer() e getBuffer().
Parametri
| buffer | |
|---|---|
| imageProperties |
Lanci
| IllegalArgumentException | se la dimensione del buffer è inferiore a quella dell'immagine indicata dall'altezza, dalla larghezza e dal tipo di spazio colore dell'immagine in ImageProperties
|
|---|
pubblica void carica (immagine immagine)
Carica un oggetto Image in questo TensorImage.
L'utilizzo principale di questo metodo consiste nel caricare un oggetto Image come input del modello in https://www.tensorflow.org/lite/inference_with_metadata/task_library/overview.
Il backup di TensorImage da parte di Image non è supportato da ImageProcessor.
* @throws IllegalArgumentException se ImageFormat di image non è YUV_420_888
Parametri
| immagine |
|---|