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
TensorImage
i cui dati vengono copiati dasrc
e 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
Bitmap
nella configurazioneARGB_8888
(il canale "A" è sempre opaco) o inALPHA_8
, a seconda diColorSpaceType
di 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
ByteBuffer
che 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.UINT8
eDataType.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
Bitmap
nella configurazioneARGB_8888
(il canale "A" è sempre opaco) o inALPHA_8
, a seconda diColorSpaceType
di 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
TensorBuffer
che 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 |
---|