TensorImage

classe pubblica TensorImage

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)
Inizializza un oggetto TensorImage di DataType.UINT8 con un 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.UINT8DataType.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 da src e il tipo di dati è dataType

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 configurazione ARGB_8888 (il canale "A" è sempre opaco) o in ALPHA_8 , a seconda del ColorSpaceType di questo TensorBuffer .
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

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 configurazione ARGB_8888 (il canale "A" è sempre opaco) o in ALPHA_8 , a seconda del ColorSpaceType di questo TensorBuffer .
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