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.
Voir également
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) |
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. |
---|
Jetés
Exception d'argument illégal | 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 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 depuissrc
et le type de données estdataType
TensorImage statique publique fromBitmap (bitmap Bitmap)
Initialise un objet TensorImage
de DataType.UINT8
avec un Bitmap
.
Paramètres
image bitmap |
---|
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 configurationARGB_8888
(le canal "A" est toujours opaque) ou dansALPHA_8
, selon leColorSpaceType
de ceTensorBuffer
.
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
- un type de données. Actuellement, seuls
DataType.UINT8
etDataType.FLOAT32
sont pris en charge.
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 configurationARGB_8888
(le canal "A" est toujours opaque) ou dansALPHA_8
, selon leColorSpaceType
de ceTensorBuffer
.
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 |
---|