TensorImage

classe publique TensorImage

TensorImage est la classe wrapper pour l'objet Image. Lorsque vous utilisez des utilitaires de traitement d'images dans la bibliothèque TFLite.support, il est courant de convertir dans un premier temps les objets image de types de variantes au format TensorImage.

À l'heure actuelle, seules les images RVB sont prises en charge, et le canal A est toujours ignoré.

Détails du stockage de données: un objet TensorImage peut avoir deux sources potentielles de référence: Bitmap ou TensorBuffer. TensorImage conserve l'état et ne convertit l'un des états que si nécessaire. Un cas d'utilisation typique de TensorImage consiste à charger d'abord une image Bitmap, puis à la traiter à l'aide de ImageProcessor, puis à obtenir le ByteBuffer sous-jacent de TensorBuffer et à l'insérer dans l'interpréteur TFLite.

IMPORTANT: Pour optimiser les performances, TensorImage évite de copier des données chaque fois que cela est possible. Par conséquent, elle n'est pas propriétaire de ses données. Les appelants ne doivent pas modifier les objets de données transmis à load(Bitmap) ou load(TensorBuffer, ColorSpaceType).

IMPORTANT: Toutes les méthodes ne sont pas éprouvées comme étant thread-safe.

Constructeurs publics

TensorImage()
Initialise un objet TensorImage.
TensorImage(type de données DataType)
Initialise un objet TensorImage avec le type de données spécifié.

Méthodes publiques

statique TensorImage
createFrom(TensorImage src, DataType)
Crée une copie profonde d'un TensorImage donné avec le type de données souhaité.
statique TensorImage
fromBitmap(bitmap de bitmap)
Initialise un objet TensorImage de DataType.UINT8 avec un Bitmap .
Bitmap
getBitmap().
Renvoie une représentation Bitmap de ce TensorImage.
ByteBuffer
getBuffer()
Renvoie une représentation ByteBuffer de ce TensorImage avec le type de données attendu.
ColorSpaceType
getColorSpaceType()
Récupère le type d'espace colorimétrique de ce TensorImage.
DataType
getDataType()
Récupère le type de données de ce TensorImage.
int
getHeight()
Récupère la hauteur de l'image.
Images
getMediaImage()
Renvoie une représentation Image de ce TensorImage.
TensorBuffer
getTensorBuffer()
Renvoie une représentation TensorBuffer de ce TensorImage avec le type de données attendu.
int
getWidth()
Récupère la largeur de l'image.
void
load(tampon TensorBuffer, ColorSpaceType colorSpaceType)
Charge un TensorBuffer contenant les valeurs de pixels avec l'ColorSpaceType spécifique.
void
load(bitmap bitmap)
Charge un objet image Bitmap dans cette TensorImage.
void
load(int[] pixels, int[] shape)
Charge un tableau entier en pixels RVB dans ce TensorImage, représentant les pixels qu'il contient.
void
load(float[] pixels, int[] shape)
Charge un tableau flottant en pixels RVB dans ce TensorImage, représentant les pixels qu'il contient.
void
load(tampon ByteBuffer, ImageProperties imageProperties)
Charge un ByteBuffer contenant les valeurs de pixels avec l'ImageProperties spécifique.
void
load(tampon TensorBuffer, ImageProperties imageProperties)
Charge un TensorBuffer contenant les valeurs de pixels avec l'ImageProperties spécifique.
void
load(image de l'image)
Charge un objet Image dans TensorImage.

Méthodes héritées

Constructeurs publics

public TensorImage ()

Initialise un objet TensorImage.

Remarque: Le type de données de ce TensorImage est DataType.UINT8. Utilisez TensorImage(DataType) si d'autres types de données sont recommandés.

public TensorImage (DataType dataType)

Initialise un objet TensorImage avec le type de données spécifié.

Lors de l'obtention d'une TensorBuffer ou d'une ByteBuffer à partir de ce TensorImage, par exemple en utilisant getTensorBuffer() et getBuffer(), les valeurs de données sont converties dans le type de données spécifié.

Remarque: la forme d'un TensorImage n'est pas fixe. Il peut être ajusté à la forme de l'image chargée dans ce TensorImage.

Paramètres
dataType le type de données attendu du TensorBuffer obtenu. Le type est toujours fixe pendant toute la durée de vie de TensorImage. Pour convertir le type de données, utilisez createFrom(TensorImage, DataType) afin de créer une copie et de convertir le type de données en même temps.
Génère
IllegalArgumentException Si dataType n'est ni DataType.UINT8, ni DataType.FLOAT32

Méthodes publiques

public statique TensorImage createFrom (TensorImage src, DataType dataType)

Crée une copie profonde d'un TensorImage donné avec le type de données souhaité.

Paramètres
src le TensorImage à partir duquel effectuer la copie
dataType le type de données attendu du TensorImage nouvellement créé.
Renvoie
  • Une TensorImage dont les données sont copiées à partir de src et dont le type de données est dataType

public Bitmap getBitmap ()

Renvoie une représentation Bitmap de ce TensorImage.

La conversion et la limitation numérique seront appliquées si les données stockées ne sont pas de type uint8.

Notez que le moyen le plus fiable d'obtenir des pixels à partir d'un bitmap ALPHA_8 est d'utiliser copyPixelsToBuffer. Les méthodes bitmap telles que `setPixels()` et `getPixels` ne fonctionnent pas.

Important: il ne s'agit que d'une référence. NE PAS MODIFIER. Nous ne créons pas de copie ici pour des raisons de performances, mais si une modification est nécessaire, veuillez en faire une copie.

Renvoie
  • Une référence à un Bitmap dans la configuration ARGB_8888 (le "canal A" est toujours opaque) ou dans ALPHA_8, en fonction du ColorSpaceType de ce TensorBuffer.
Génère
IllegalStateException si TensorImage ne charge jamais de données.

public ByteBuffer getBuffer ()

Renvoie une représentation ByteBuffer de ce TensorImage avec le type de données attendu.

La conversion et la limitation numérique sont appliquées si les données stockées sont différentes du type de données de l'élément TensorImage.

Important: il ne s'agit que d'une référence. NE PAS MODIFIER. Nous ne créons pas de copie ici pour des raisons de performances, mais si une modification est nécessaire, veuillez en faire une copie.

Il s'agit essentiellement d'un raccourci pour getTensorBuffer().getBuffer().

Renvoie
  • une référence à un ByteBuffer qui contient les données d'image ;
Génère
IllegalStateException si TensorImage ne charge jamais de données.

public ColorSpaceType getColorSpaceType ()

Récupère le type d'espace colorimétrique de ce TensorImage.

Génère
IllegalStateException si TensorImage ne charge jamais de données.

public DataType getDataType ()

Récupère le type de données de ce TensorImage.

Renvoie

public int getHeight ()

Récupère la hauteur de l'image.

Génère
IllegalStateException si TensorImage ne charge jamais de données.
IllegalArgumentException si les données sous-jacentes sont corrompues

public Image getMediaImage ()

Renvoie une représentation Image de ce TensorImage.

Cette méthode ne fonctionne que lorsque TensorImage repose sur un Image, ce qui signifie que vous devez d'abord charger un Image via load(Image).

Important: il ne s'agit que d'une référence. NE PAS MODIFIER. Nous ne créons pas de copie ici pour des raisons de performances, mais si une modification est nécessaire, veuillez en faire une copie.

Renvoie
  • Une référence à un Bitmap dans la configuration ARGB_8888 (le "canal A" est toujours opaque) ou dans ALPHA_8, en fonction du ColorSpaceType de ce TensorBuffer.
Génère
IllegalStateException si TensorImage ne charge jamais de données.

public TensorBuffer getTensorBuffer ()

Renvoie une représentation TensorBuffer de ce TensorImage avec le type de données attendu.

La conversion et la limitation numérique sont appliquées si les données stockées sont différentes du type de données de l'élément TensorImage.

Important: il ne s'agit que d'une référence. NE PAS MODIFIER. Nous ne créons pas de copie ici pour des raisons de performances, mais si une modification est nécessaire, veuillez en faire une copie.

Renvoie
  • une référence à un TensorBuffer qui contient les données d'image ;
Génère
IllegalStateException si TensorImage ne charge jamais de données.

public int getWidth ()

Récupère la largeur de l'image.

Génère
IllegalStateException si TensorImage ne charge jamais de données.
IllegalArgumentException si les données sous-jacentes sont corrompues

public vide load (tampon TensorBuffer, ColorSpaceType colorSpaceType)

Charge un TensorBuffer contenant les valeurs de pixels avec l'ColorSpaceType spécifique.

Compatible uniquement avec ColorSpaceType.RGB et ColorSpaceType.GRAYSCALE. Utilisez load(TensorBuffer, ImageProperties) pour les autres types d'espaces colorimétriques.

Remarque: Si le type de données de buffer ne correspond pas à celui de ce TensorImage, le casting et la limitation numérique sont appliqués lors de l'appel de getTensorBuffer() et de getBuffer().

Paramètres
mise en mémoire tampon TensorBuffer à charger. Sa forme doit être (h, w, 3) ou (1, h, w, 3) pour les images RVB, et (h, w) ou (1, h, w) pour les images GRIS
colorSpaceType
Génère
IllegalArgumentException si la forme du tampon ne correspond pas au type d'espace colorimétrique ou si le type d'espace colorimétrique n'est pas compatible

public vide load (bitmap de bitmap)

Charge un objet image Bitmap dans cette TensorImage.

Remarque: Si TensorImage a un type de données autre que DataType.UINT8, la conversion et la limitation numérique sont appliquées lors de l'appel de getTensorBuffer() et getBuffer(), où Bitmap est converti en TensorBuffer.

Important: Lors du chargement d'un bitmap, NE MODIFIEZ PAS le bitmap côté appelant. L'objet TensorImage s'appuiera sur le bitmap. Cela modifiera probablement également le bitmap. Dans cette méthode, nous effectuons une approche de zéro copie pour ce bitmap en conservant simplement sa référence. Utilisez bitmap.copy(bitmap.getConfig(), true) pour créer une copie si nécessaire.

Remarque: Pour obtenir des performances optimales, chargez des images ayant la même forme afin d'éviter la réallocation de mémoire.

Paramètres
bitmap
Génère
IllegalArgumentException Si bitmap n'est pas au format ARGB_8888

public void load (int[] pixels, int[] shape)

Charge un tableau entier en pixels RVB dans ce TensorImage, représentant les pixels qu'il contient.

Remarque: Le casting et la limitation numérique sont appliqués pour convertir les valeurs dans le type de données de ce TensorImage lorsque vous appelez getTensorBuffer() et getBuffer().

Paramètres
pixels les pixels RVB représentant l'image
shape la forme de l'image, qui doit se présenter sous la forme (h, w, 3) ou (1, h, w, 3)
Génère
IllegalArgumentException si la forme n'est ni (h, w, 3) ni (1, h, w, 3)

public void load (float[] pixels, int[] shape)

Charge un tableau flottant en pixels RVB dans ce TensorImage, représentant les pixels qu'il contient.

Remarque: Si TensorImage possède un type de données autre que DataType.FLOAT32, le casting et la limitation numérique sont appliqués lors de l'appel de getTensorBuffer() et getBuffer().

Paramètres
pixels les pixels RVB représentant l'image
shape la forme de l'image, qui doit se présenter sous la forme (h, w, 3) ou (1, h, w, 3)
Génère
IllegalArgumentException si la forme n'est ni (h, w, 3) ni (1, h, w, 3)

public void load (tampon ByteBuffer, ImageProperties imageProperties)

Charge un ByteBuffer contenant les valeurs de pixels avec l'ImageProperties spécifique.

Remarque: Si le type de données de buffer ne correspond pas à celui de ce TensorImage, le casting et la limitation numérique sont appliqués lors de l'appel de getTensorBuffer() et de getBuffer().

Paramètres
mise en mémoire tampon
imageProperties
Génère
IllegalArgumentException Si la taille de la mémoire tampon est inférieure à la taille de l'image indiquée par la hauteur, la largeur et le type d'espace colorimétrique dans ImageProperties

public void load (tampon TensorBuffer, ImageProperties imageProperties)

Charge un TensorBuffer contenant les valeurs de pixels avec l'ImageProperties spécifique.

La forme de TensorBuffer ne sera pas utilisée pour déterminer la hauteur et la largeur de l'image. Définissez les propriétés de l'image via ImageProperties.

Remarque: Si le type de données de buffer ne correspond pas à celui de ce TensorImage, le casting et la limitation numérique sont appliqués lors de l'appel de getTensorBuffer() et de getBuffer().

Paramètres
mise en mémoire tampon
imageProperties
Génère
IllegalArgumentException Si la taille de la mémoire tampon est inférieure à la taille de l'image indiquée par la hauteur, la largeur et le type d'espace colorimétrique dans ImageProperties

public vide load (image image)

Charge un objet Image dans TensorImage.

La principale utilisation de cette méthode consiste à charger un objet Image en tant qu'entrée de modèle dans https://www.tensorflow.org/lite/inference_with_metadata/task_library/overview. TensorImage reposant sur Image n'est pas compatible avec ImageProcessor.

* @renvoie IllegalArgumentException si le ImageFormat de image n'est pas YUV_420_888.

Paramètres
Image