TensorImage è la classe wrapper per l'oggetto Immagine. Quando si utilizzano le utilità di elaborazione delle immagini nella libreria TFLite.support, è normale convertire inizialmente gli oggetti immagine nei tipi di variante in TensorImage.
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 2 potenziali fonti di verità: una Bitmap
o un TensorBuffer
. TensorImage
mantiene lo stato e converte l'uno nell'altro solo quando necessario. Un tipico caso d'uso di TensorImage
consiste nel caricare prima un'immagine Bitmap
, quindi elaborarla utilizzando ImageProcessor
e infine ottenere il ByteBuffer
sottostante del TensorBuffer
e inserirlo nell'interprete TFLite.
IMPORTANTE: per ottenere le migliori prestazioni, TensorImage
evita di copiare i dati ogni volta che è possibile. Pertanto, non possiede i suoi dati. I chiamanti non devono modificare gli oggetti dati passati a load(Bitmap)
o load(TensorBuffer, ColorSpaceType)
.
IMPORTANTE: non tutti i metodi sono dimostrati thread-safe.
Costruttori pubblici
TensorImage () Inizializza un oggetto TensorImage . | |
TensorImage (Tipo di dati tipo di dati ) Inizializza un oggetto TensorImage con il tipo di dati specificato. |
Metodi pubblici
TensorImage statico | createFrom ( TensorImage src, DataType dataType) Crea una copia approfondita di un determinato TensorImage con il tipo di dati desiderato. |
TensorImage statico | 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 () Ottiene il tipo di spazio colore di questo TensorImage . |
Tipo di dati | getDataType () Ottiene il tipo di dati di questo TensorImage . |
int | getAltezza () Ottiene 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 | getLarghezza () Ottiene la larghezza dell'immagine. |
vuoto | caricamento (buffer TensorBuffer , ColorSpaceType colorSpaceType) Carica un TensorBuffer contenente valori di pixel con lo specifico ColorSpaceType . |
vuoto | caricare (bitmap bitmap) Carica un oggetto immagine Bitmap in questo TensorImage . |
vuoto | caricamento (int[] pixel, int[] forma) Carica un array int come pixel RGB in questo TensorImage , che rappresenta i pixel all'interno. |
vuoto | caricamento (float[] pixel, int[] forma) Carica un array float come pixel RGB in questo TensorImage , che rappresenta i pixel all'interno. |
vuoto | caricamento (buffer ByteBuffer , ImageProperties imageProperties) Carica un ByteBuffer contenente valori di pixel con le ImageProperties specifiche. |
vuoto | caricamento (buffer TensorBuffer , ImageProperties imageProperties) Carica un TensorBuffer contenente valori di pixel con le ImageProperties specifiche. |
vuoto | caricare (immagine immagine) Carica un oggetto Image in questo TensorImage . |
Metodi ereditati
Costruttori pubblici
pubblico TensorImage ()
Inizializza un oggetto TensorImage
.
Nota: il tipo di dati di questo TensorImage
è DataType.UINT8
. Utilizzare TensorImage(DataType)
se si preferiscono altri tipi di dati.
public TensorImage ( DataType dataType)
Inizializza un oggetto TensorImage
con il tipo di dati specificato.
Quando si ottiene un TensorBuffer
o un ByteBuffer
da questo TensorImage
, ad esempio utilizzando getTensorBuffer()
e getBuffer()
, i valori dei dati verranno convertiti nel tipo di dati specificato.
Nota: la forma di una TensorImage
non è fissa. Può essere adattato alla forma dell'immagine caricata in questo TensorImage
.
Parametri
tipo di dati | il tipo di dati previsto del TensorBuffer risultante. Il tipo è sempre fisso durante la durata di TensorImage . Per convertire il tipo di dati, utilizzare createFrom(TensorImage, DataType) per creare una copia e convertire il tipo di dati allo stesso tempo. |
---|
Lancia
IllegalArgumentException | se dataType non è né DataType.UINT8 né DataType.FLOAT32 |
---|
Metodi pubblici
TensorImage pubblico statico createFrom ( TensorImage src, DataType dataType)
Crea una copia approfondita di un determinato TensorImage
con il tipo di dati desiderato.
Parametri
src | la TensorImage da cui copiare |
---|---|
tipo di dati | il tipo di dati previsto per TensorImage appena creato |
ritorna
- un
TensorImage
i cui dati vengono copiati dasrc
e il tipo di dati èdataType
TensorImage pubblico statico fromBitmap (bitmap bitmap)
Inizializza un oggetto TensorImage
di DataType.UINT8
con un Bitmap
.
Parametri
bitmap |
---|
Bitmap pubblica getBitmap ()
Restituisce una rappresentazione Bitmap
di questo TensorImage
.
Se i dati memorizzati non sono uint8 verranno applicati la fusione e il bloccaggio numerici.
Tieni presente che il modo affidabile per ottenere pixel da una bitmap ALPHA_8
è utilizzare copyPixelsToBuffer
. I metodi bitmap come `setPixels()` e `getPixels` non funzionano.
Importante: è solo un riferimento. NON MODIFICARE. Non creiamo una copia qui per motivi di prestazioni, ma se è necessaria una modifica, creane una copia.
ritorna
- un riferimento a una
Bitmap
nella configurazioneARGB_8888
(il canale "A" è sempre opaco) o inALPHA_8
, a seconda delColorSpaceType
di questoTensorBuffer
.
Lancia
IllegalStateException | se TensorImage non carica mai i dati |
---|
pubblico ByteBuffer getBuffer ()
Restituisce una rappresentazione ByteBuffer
di questo TensorImage
con il tipo di dati previsto.
La fusione e il bloccaggio numerico verranno applicati se i dati memorizzati sono diversi dal tipo di dati di TensorImage
.
Importante: è solo un riferimento. NON MODIFICARE. Non creiamo una copia qui per motivi di prestazioni, ma se è necessaria una modifica, creane una copia.
È essenzialmente una scorciatoia per getTensorBuffer().getBuffer()
.
ritorna
- un riferimento a un
ByteBuffer
che contiene i dati dell'immagine
Lancia
IllegalStateException | se TensorImage non carica mai i dati |
---|
public ColorSpaceType getColorSpaceType ()
Ottiene il tipo di spazio colore di questo TensorImage
.
Lancia
IllegalStateException | se TensorImage non carica mai i dati |
---|
public DataType getDataType ()
Ottiene il tipo di dati di questo TensorImage
.
ritorna
- un tipo di dati. Attualmente sono supportati solo
DataType.UINT8
eDataType.FLOAT32
.
public int getHeight ()
Ottiene l'altezza dell'immagine.
Lancia
IllegalStateException | se TensorImage non carica mai i dati |
---|---|
IllegalArgumentException | se i dati sottostanti sono danneggiati |
Immagine pubblica getMediaImage ()
Restituisce una rappresentazione Image
di questo TensorImage
.
Questo metodo funziona solo quando TensorImage
è supportato da un Image
, il che significa che è necessario prima caricare Image
tramite load(Image)
.
Importante: è solo un riferimento. NON MODIFICARE. Non creiamo una copia qui per motivi di prestazioni, ma se è necessaria una modifica, creane una copia.
ritorna
- un riferimento a una
Bitmap
nella configurazioneARGB_8888
(il canale "A" è sempre opaco) o inALPHA_8
, a seconda delColorSpaceType
di questoTensorBuffer
.
Lancia
IllegalStateException | se TensorImage non carica mai i dati |
---|
public TensorBuffer getTensorBuffer ()
Restituisce una rappresentazione TensorBuffer
di questo TensorImage
con il tipo di dati previsto.
La fusione e il bloccaggio numerico verranno applicati se i dati memorizzati sono diversi dal tipo di dati di TensorImage
.
Importante: è solo un riferimento. NON MODIFICARE. Non creiamo una copia qui per motivi di prestazioni, ma se è necessaria una modifica, creane una copia.
ritorna
- un riferimento a un
TensorBuffer
che contiene i dati dell'immagine
Lancia
IllegalStateException | se TensorImage non carica mai i dati |
---|
public int getWidth ()
Ottiene la larghezza dell'immagine.
Lancia
IllegalStateException | se TensorImage non carica mai i dati |
---|---|
IllegalArgumentException | se i dati sottostanti sono danneggiati |
carico vuoto pubblico (buffer TensorBuffer , ColorSpaceType colorSpaceType)
Carica un TensorBuffer
contenente valori di pixel con lo specifico ColorSpaceType
.
Supporta solo ColorSpaceType.RGB
e ColorSpaceType.GRAYSCALE
. Utilizzare load(TensorBuffer, ImageProperties)
per altri tipi di spazio colore.
Nota: se il tipo di dati del buffer
non corrisponde a quello di questo TensorImage
, verranno applicati il casting e il clamping numerico quando si chiamano getTensorBuffer()
e getBuffer()
.
Parametri
respingente | il 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 |
Lancia
IllegalArgumentException | se la forma del buffer non corrisponde al tipo di spazio colore o se il tipo di spazio colore non è supportato |
---|
carico vuoto pubblico (bitmap bitmap)
Carica un oggetto immagine Bitmap
in questo TensorImage
.
Nota: se TensorImage
ha un tipo di dati diverso da DataType.UINT8
, verranno applicati il casting e il bloccaggio numerico quando si chiamano getTensorBuffer()
e getBuffer()
, dove la Bitmap
verrà convertita in un TensorBuffer
.
Importante: quando si carica una bitmap, NON MODIFICARE più la bitmap dal lato chiamante. L'oggetto TensorImage
farà affidamento sulla bitmap. Probabilmente modificherà anche la bitmap. In questo metodo, eseguiamo un approccio a copia zero per quella bitmap, semplicemente mantenendone il riferimento. Utilizzare bitmap.copy(bitmap.getConfig(), true)
per creare una copia, se necessario.
Nota: per ottenere le migliori prestazioni, caricare le immagini nella stessa forma per evitare la riallocazione della memoria.
Parametri
bitmap |
---|
Lancia
IllegalArgumentException | se bitmap non è in ARGB_8888 |
---|
carico vuoto pubblico (int[] pixel, int[] forma)
Carica un array int come pixel RGB in questo TensorImage
, che rappresenta i pixel all'interno.
Nota: la conversione e il bloccaggio numerico verranno applicati per convertire i valori nel tipo di dati di questo TensorImage
quando si chiama getTensorBuffer()
e getBuffer()
.
Parametri
pixel | i pixel RGB che rappresentano l'immagine |
---|---|
forma | la forma dell'immagine, dovrebbe essere nella forma (h, w, 3) o nella forma (1, h, w, 3) |
Lancia
IllegalArgumentException | se la forma non è né (h, w, 3) né (1, h, w, 3) |
---|
carico vuoto pubblico (float[] pixel, int[] forma)
Carica un array float come pixel RGB in questo TensorImage
, che rappresenta i pixel all'interno.
Nota: se TensorImage
ha un tipo di dati diverso da DataType.FLOAT32
, verranno applicati il casting e il clamping numerico quando si chiamano getTensorBuffer()
e getBuffer()
.
Parametri
pixel | i pixel RGB che rappresentano l'immagine |
---|---|
forma | la forma dell'immagine, dovrebbe essere nella forma (h, w, 3) o nella forma (1, h, w, 3) |
Lancia
IllegalArgumentException | se la forma non è né (h, w, 3) né (1, h, w, 3) |
---|
caricamento vuoto pubblico (buffer ByteBuffer , ImageProperties imageProperties)
Carica un ByteBuffer
contenente valori di pixel con le ImageProperties
specifiche.
Nota: se il tipo di dati del buffer
non corrisponde a quello di questo TensorImage
, verranno applicati il casting e il clamping numerico quando si chiamano getTensorBuffer()
e getBuffer()
.
Parametri
respingente | |
---|---|
imageProperties |
Lancia
IllegalArgumentException | se la dimensione del buffer è inferiore alla dimensione dell'immagine indicata dall'altezza, dalla larghezza e dal tipo di spazio colore dell'immagine in ImageProperties |
---|
carico vuoto pubblico (buffer TensorBuffer , ImageProperties imageProperties)
Carica un TensorBuffer
contenente valori di pixel con le ImageProperties
specifiche.
La forma del 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 del buffer
non corrisponde a quello di questo TensorImage
, verranno applicati il casting e il clamping numerico quando si chiamano getTensorBuffer()
e getBuffer()
.
Parametri
respingente | |
---|---|
imageProperties |
Lancia
IllegalArgumentException | se la dimensione del buffer è inferiore alla dimensione dell'immagine indicata dall'altezza, dalla larghezza e dal tipo di spazio colore dell'immagine in ImageProperties |
---|
carico vuoto pubblico (Immagine immagine)
Carica un oggetto Image
in questo TensorImage
.
L'utilizzo principale di questo metodo è caricare un oggetto Image
come input del modello in https://www.tensorflow.org/lite/inference_with_metadata/task_library/overview . TensorImage
supportato da Image
non è supportato da ImageProcessor
.
* @throws IllegalArgumentException se ImageFormat
image
non è YUV_420_888
Parametri
Immagine |
---|