TensorImage

classe publique TensorImage

TensorImage est la classe wrapper de l'objet Image. Lors de l'utilisation d'utilitaires de traitement d'image dans la bibliothèque TFLite.support, il est courant de convertir dans un premier temps les objets image de types variantes en TensorImage.

Actuellement, seules les images RVB sont prises en charge et le canal A est toujours ignoré.

Détails du stockage des données : un objet TensorImage peut avoir 2 sources potentielles de vérité : un Bitmap ou un TensorBuffer . TensorImage conserve l'état et ne convertit l'un en l'autre qu'en cas de besoin. Un cas d'utilisation typique de TensorImage consiste à charger d'abord une image Bitmap , puis à la traiter à l'aide de ImageProcessor , et enfin à obtenir le ByteBuffer sous-jacent du TensorBuffer et à l'introduire dans l'interpréteur TFLite.

IMPORTANT : pour obtenir les meilleures performances, TensorImage évite de copier les données autant que possible. Il n’est donc 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éesType de données )
Initialise un objet TensorImage avec le type de données spécifié.

Méthodes publiques

TensorImage statique
createFrom ( TensorImage src, DataType dataType)
Crée une copie complète d'un TensorImage donné avec le type de données souhaité.
TensorImage statique
fromBitmap (bitmap bitmap)
Initialise un objet TensorImage de DataType.UINT8 avec un Bitmap .
Bitmap
obtenirBitmap ()
Renvoie une représentation Bitmap de ce TensorImage .
OctetBuffer
getBuffer ()
Renvoie une représentation ByteBuffer de ce TensorImage avec le type de données attendu.
TypeEspaceCouleur
getColorSpaceType ()
Obtient le type d'espace colorimétrique de ce TensorImage .
Type de données
getDataType ()
Obtient le type de données de ce TensorImage .
int
obtenirHauteur ()
Obtient la hauteur de l'image.
Image
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
obtenirLargeur ()
Obtient la largeur de l'image.
vide
charger (tampon TensorBuffer , ColorSpaceType colorSpaceType)
Charge un TensorBuffer contenant des valeurs de pixels avec le ColorSpaceType spécifique.
vide
charger (bitmap Bitmap)
Charge un objet image Bitmap dans ce TensorImage .
vide
charger (int[] pixels, forme int[])
Charge un tableau int sous forme de pixels RVB dans ce TensorImage , représentant les pixels à l'intérieur.
vide
charger (float[] pixels, forme int[])
Charge un tableau flottant sous forme de pixels RVB dans ce TensorImage , représentant les pixels à l'intérieur.
vide
charger (tampon ByteBuffer , ImageProperties imageProperties)
Charge un ByteBuffer contenant des valeurs de pixels avec les ImageProperties spécifiques.
vide
charger (tampon TensorBuffer , ImageProperties imageProperties)
Charge un TensorBuffer contenant des valeurs de pixels avec les ImageProperties spécifiques.
vide
charger (Image image)
Charge un objet Image dans ce TensorImage .

Méthodes héritées

Constructeurs Publics

TensorImage publique ()

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 préférés.

public TensorImage ( DataType type de données)

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

Lors de l'obtention d'un TensorBuffer ou d'un ByteBuffer à partir de ce TensorImage , par exemple en utilisant getTensorBuffer() et getBuffer() , les valeurs de données seront 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
Type de données le type de données attendu du TensorBuffer résultant. Le type est toujours fixe pendant la durée de vie du TensorImage . Pour convertir le type de données, utilisez createFrom(TensorImage, DataType) pour créer une copie et convertir le type de données en même temps.

Méthodes publiques

public statique TensorImage createFrom ( TensorImage src, DataType dataType)

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

Paramètres
src le TensorImage à partir duquel copier
Type de données le type de données attendu du TensorImage nouvellement créé
Retour
  • un TensorImage dont les données sont copiées depuis src et le type de données est dataType

Bitmap public getBitmap ()

Renvoie une représentation Bitmap de ce TensorImage .

La conversion numérique et le serrage seront appliqués si les données stockées ne sont pas uint8.

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

Important : ce n'est qu'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.

Retour
  • une référence à un Bitmap dans la configuration ARGB_8888 (le canal "A" est toujours opaque) ou dans ALPHA_8 , selon le ColorSpaceType de ce TensorBuffer .
Jetés
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 numérique et le serrage seront appliqués si les données stockées sont différentes du type de données du TensorImage .

Important : ce n'est qu'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() .

Retour
  • une référence à un ByteBuffer qui contient les données d'image
Jetés
IllegalStateException si TensorImage ne charge jamais de données

public ColorSpaceType getColorSpaceType ()

Obtient le type d'espace colorimétrique de ce TensorImage .

Jetés
IllegalStateException si TensorImage ne charge jamais de données

Type de données public getDataType ()

Obtient le type de données de ce TensorImage .

Retour

public int getHauteur ()

Obtient la hauteur de l'image.

Jetés
IllegalStateException si TensorImage ne charge jamais de données
Exception d'argument illégal si les données sous-jacentes sont corrompues

Image publique getMediaImage ()

Renvoie une représentation Image de ce TensorImage .

Cette méthode ne fonctionne que lorsque le TensorImage est soutenu par un Image , ce qui signifie que vous devez d'abord charger une Image via load(Image) .

Important : ce n'est qu'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.

Retour
  • une référence à un Bitmap dans la configuration ARGB_8888 (le canal "A" est toujours opaque) ou dans ALPHA_8 , selon le ColorSpaceType de ce TensorBuffer .
Jetés
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 numérique et le serrage seront appliqués si les données stockées sont différentes du type de données du TensorImage .

Important : ce n'est qu'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.

Retour
  • une référence à un TensorBuffer qui contient les données d'image
Jetés
IllegalStateException si TensorImage ne charge jamais de données

public int getWidth ()

Obtient la largeur de l'image.

Jetés
IllegalStateException si TensorImage ne charge jamais de données
Exception d'argument illégal si les données sous-jacentes sont corrompues

charge vide publique (tampon TensorBuffer , ColorSpaceType colorSpaceType)

Charge un TensorBuffer contenant des valeurs de pixels avec le ColorSpaceType spécifique.

Prend uniquement en charge ColorSpaceType.RGB et ColorSpaceType.GRAYSCALE . Utilisez load(TensorBuffer, ImageProperties) pour d’autres types d’espace colorimétrique.

Remarque : si le type de données du buffer ne correspond pas à celui de ce TensorImage , la conversion numérique et le verrouillage seront appliqués lors de l'appel de getTensorBuffer() et getBuffer() .

Paramètres
tampon le TensorBuffer à charger. Sa forme doit être soit (h, w, 3) soit (1, h, w, 3) pour les images RVB, et soit (h, w) ou (1, h, w) pour les images GRAYSCALE.
couleurEspaceType
Jetés
Exception d'argument illégal 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 pris en charge

charge vide publique (bitmap Bitmap)

Charge un objet image Bitmap dans ce TensorImage .

Remarque : si TensorImage a un type de données autre que DataType.UINT8 , la conversion numérique et le verrouillage seront appliqués lors de l'appel getTensorBuffer() et getBuffer() , où le Bitmap sera converti en TensorBuffer .

Important : lors du chargement d'un bitmap, NE MODIFIEZ PLUS le bitmap du 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 sans 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 les meilleures performances, veuillez charger les images sous la même forme pour éviter la réallocation de mémoire.

Paramètres
image bitmap
Jetés
Exception d'argument illégal si bitmap n'est pas dans ARGB_8888

charge de vide public (int[] pixels, forme int[])

Charge un tableau int sous forme de pixels RVB dans ce TensorImage , représentant les pixels à l'intérieur.

Remarque : la conversion numérique et le verrouillage seront appliqués pour convertir les valeurs dans le type de données de ce TensorImage lors de l'appel de getTensorBuffer() et getBuffer() .

Paramètres
pixels les pixels RVB représentant l'image
forme la forme de l'image doit être soit en forme (h, w, 3), soit en forme (1, h, w, 3)
Jetés
Exception d'argument illégal si la forme n'est ni (h, w, 3) ni (1, h, w, 3)

charge de vide public (float[] pixels, forme int[])

Charge un tableau flottant sous forme de pixels RVB dans ce TensorImage , représentant les pixels à l'intérieur.

Remarque : si TensorImage a un type de données autre que DataType.FLOAT32 , la conversion et le verrouillage numériques seront appliqués lors de l'appel de getTensorBuffer() et getBuffer() .

Paramètres
pixels les pixels RVB représentant l'image
forme la forme de l'image doit être soit en forme (h, w, 3), soit en forme (1, h, w, 3)
Jetés
Exception d'argument illégal si la forme n'est ni (h, w, 3) ni (1, h, w, 3)

charge vide publique (tampon ByteBuffer , ImageProperties imageProperties)

Charge un ByteBuffer contenant des valeurs de pixels avec les ImageProperties spécifiques.

Remarque : si le type de données du buffer ne correspond pas à celui de ce TensorImage , la conversion numérique et le verrouillage seront appliqués lors de l'appel de getTensorBuffer() et getBuffer() .

Paramètres
tampon
Propriétés de l'image
Jetés
Exception d'argument illégal si la taille du 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

charge vide publique (tampon TensorBuffer , ImageProperties imageProperties)

Charge un TensorBuffer contenant des valeurs de pixels avec les ImageProperties spécifiques.

La forme du 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 du buffer ne correspond pas à celui de ce TensorImage , la conversion numérique et le verrouillage seront appliqués lors de l'appel de getTensorBuffer() et getBuffer() .

Paramètres
tampon
Propriétés de l'image
Jetés
Exception d'argument illégal si la taille du 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

charge vide publique (image image)

Charge un objet Image dans ce TensorImage .

L'utilisation principale de cette méthode est de charger un objet Image comme entrée de modèle dans https://www.tensorflow.org/lite/inference_with_metadata/task_library/overview . TensorImage soutenu par Image n'est pas pris en charge par ImageProcessor .

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

Paramètres
image