TensorImage

Öffentliche Klasse TensorImage

TensorImage ist die Wrapper-Klasse für das Image-Objekt. Wenn Sie Dienstprogramme zur Bildverarbeitung in der TFLite.support-Bibliothek verwenden, werden Bildobjekte in Variantentypen zuerst in TensorImage konvertiert.

Derzeit werden nur RGB-Bilder unterstützt und der A-Kanal wird immer ignoriert.

Details zur Datenspeicherung: Ein TensorImage-Objekt kann zwei mögliche Datenquellen haben: Bitmap oder TensorBuffer. TensorImage behält den Status bei und konvertiert nur bei Bedarf in den anderen. Ein typischer Anwendungsfall von TensorImage besteht darin, zuerst ein Bitmap-Bild zu laden, es dann mit ImageProcessor zu verarbeiten und schließlich den zugrunde liegenden ByteBuffer von TensorBuffer abzurufen und in den TFLite-Interpreter einzuspeisen.

WICHTIG: Für eine optimale Leistung werden in TensorImage nach Möglichkeit keine Daten kopiert. Sie sind also nicht Eigentümer der Daten. Aufrufer sollten keine Datenobjekte ändern, die an load(Bitmap) oder load(TensorBuffer, ColorSpaceType) übergeben werden.

WICHTIG: Keine der Methoden erweist sich als Thread-sicher.

Public Constructors

TensorImage()
Initialisiert ein TensorImage-Objekt.
TensorImage(DataType)
Initialisiert ein TensorImage-Objekt mit dem angegebenen Datentyp.

Public Methods

Statisches TensorImage
createFrom(TensorImage src, DataType Datentyp)
Erstellt eine Deep-Kopie einer bestimmten TensorImage mit dem gewünschten Datentyp.
Statisches TensorImage
fromBitmap(Bitmap-Bitmap)
Initialisiert ein TensorImage-Objekt von DataType.UINT8 mit einem Bitmap .
Bitmap
getBitmap()
Gibt eine Bitmap-Darstellung dieser TensorImage zurück.
ByteBuffer
getBuffer()
Gibt eine ByteBuffer-Darstellung dieser TensorImage mit dem erwarteten Datentyp zurück.
ColorSpaceType
getColorSpaceType()
Ruft den Farbraumtyp dieses TensorImage ab.
DataType
getDataType()
Ruft den Datentyp von TensorImage ab.
int
getHeight()
Ruft die Bildhöhe ab.
Bild
getMediaImage()
Gibt eine Image-Darstellung dieser TensorImage zurück.
TensorBuffer
getTensorBuffer()
Gibt eine TensorBuffer-Darstellung dieser TensorImage mit dem erwarteten Datentyp zurück.
int
getWidth()
Ruft die Bildbreite ab.
void
load(TensorBuffer-Puffer, ColorSpaceType colorSpaceType)
Lädt eine TensorBuffer, die Pixelwerte mit dem spezifischen ColorSpaceType enthält.
void
load(Bitmap-Bitmap)
Lädt ein Bitmap-Bildobjekt in dieses TensorImage-Element.
void
load(int[]-Pixel, int[]-Form)
Lädt ein Ganzzahl-Array als RGB-Pixel in diesen TensorImage, um die darin enthaltenen Pixel darzustellen.
void
load(Gleitkommazahl[]-Pixel, Ganzzahl[]-Form)
Lädt ein Float-Array als RGB-Pixel in dieses TensorImage-Element, das die darin enthaltenen Pixel darstellt
void
load(ByteBuffer-Zwischenspeicher, ImageProperties-imageProperties)
Lädt eine ByteBuffer, die Pixelwerte mit dem spezifischen ImageProperties enthält.
void
load(TensorBuffer-Puffer, ImageProperties imageProperties)
Lädt eine TensorBuffer, die Pixelwerte mit dem spezifischen ImageProperties enthält.
void
load(Bild)
Lädt ein Image-Objekt in dieses TensorImage.

Übernommene Methoden

Public Constructors

öffentlich TensorImage ()

Initialisiert ein TensorImage-Objekt.

Hinweis: Der Datentyp von TensorImage ist DataType.UINT8. Verwende TensorImage(DataType), wenn andere Datentypen bevorzugt werden sollen.

public TensorImage (DataType-Datentyp)

Initialisiert ein TensorImage-Objekt mit dem angegebenen Datentyp.

Beim Abrufen von TensorBuffer oder ByteBuffer aus diesem TensorImage, z. B. mit getTensorBuffer() und getBuffer(), werden die Datenwerte in den angegebenen Datentyp konvertiert.

Hinweis: Die Form von TensorImage ist nicht festgelegt. Sie kann an die Form des Bildes angepasst werden, das in dieses TensorImage geladen wird.

Parameter
dataType den erwarteten Datentyp der resultierenden TensorBuffer. Der Typ bleibt während der Lebensdauer von TensorImage immer fixiert. Verwenden Sie zum Konvertieren des Datentyps createFrom(TensorImage, DataType), um eine Kopie zu erstellen und den Datentyp gleichzeitig zu konvertieren.
Löst aus
IllegalArgumentException wenn dataType weder DataType.UINT8 noch DataType.FLOAT32 ist

Public Methods

public static TensorImage createFrom (TensorImage src, DataType Datentyp)

Erstellt eine Deep-Kopie einer bestimmten TensorImage mit dem gewünschten Datentyp.

Parameter
src TensorImage, aus dem kopiert werden soll
dataType den erwarteten Datentyp der neu erstellten TensorImage
Rückgabe
  • TensorImage, dessen Daten aus src kopiert werden und deren Datentyp dataType ist

public Bitmap getBitmap ()

Gibt eine Bitmap-Darstellung dieser TensorImage zurück.

Numerische Umwandlungen und Einschränkungen werden angewendet, wenn die gespeicherten Daten nicht uint8 sind.

Hinweis: Die zuverlässige Methode zum Abrufen von Pixeln aus einer ALPHA_8-Bitmap ist die Verwendung von copyPixelsToBuffer. Bitmapmethoden wie „setPixels()“ und „getPixels“ funktionieren nicht.

Wichtig: Dies ist nur eine Referenz. NICHT ÄNDERN. Wir erstellen hier keine Kopie, um die Leistung zu steigern. Wenn jedoch Änderungen erforderlich sind, erstellen Sie eine Kopie.

Rückgabe
Löst aus
IllegalStateException Wenn TensorImage nie Daten lädt

public ByteBuffer getBuffer ()

Gibt eine ByteBuffer-Darstellung dieser TensorImage mit dem erwarteten Datentyp zurück.

Wenn sich die gespeicherten Daten vom Datentyp von TensorImage unterscheiden, wird die numerische Umwandlung und Einschränkung angewendet.

Wichtig: Dies ist nur eine Referenz. NICHT ÄNDERN. Wir erstellen hier keine Kopie, um die Leistung zu steigern. Wenn jedoch Änderungen erforderlich sind, erstellen Sie eine Kopie.

Es ist im Wesentlichen eine Abkürzung für getTensorBuffer().getBuffer().

Rückgabe
  • ein Verweis auf eine ByteBuffer, die die Bilddaten enthält
Löst aus
IllegalStateException Wenn TensorImage nie Daten lädt

public ColorSpaceType getColorSpaceType ()

Ruft den Farbraumtyp dieses TensorImage ab.

Löst aus
IllegalStateException Wenn TensorImage nie Daten lädt

public DataType getDataType ()

Ruft den Datentyp von TensorImage ab.

Rückgabe

public int getHeight ()

Ruft die Bildhöhe ab.

Löst aus
IllegalStateException Wenn TensorImage nie Daten lädt
IllegalArgumentException Die zugrunde liegenden Daten sind beschädigt.

public Bild getMediaImage ()

Gibt eine Image-Darstellung dieser TensorImage zurück.

Diese Methode funktioniert nur, wenn das TensorImage von einem Image unterstützt wird. Das bedeutet, dass Sie zuerst ein Image über load(Image) laden müssen.

Wichtig: Dies ist nur eine Referenz. NICHT ÄNDERN. Wir erstellen hier keine Kopie, um die Leistung zu steigern. Wenn jedoch Änderungen erforderlich sind, erstellen Sie eine Kopie.

Rückgabe
Löst aus
IllegalStateException Wenn TensorImage nie Daten lädt

public TensorBuffer getTensorBuffer ()

Gibt eine TensorBuffer-Darstellung dieser TensorImage mit dem erwarteten Datentyp zurück.

Wenn sich die gespeicherten Daten vom Datentyp von TensorImage unterscheiden, wird die numerische Umwandlung und Einschränkung angewendet.

Wichtig: Dies ist nur eine Referenz. NICHT ÄNDERN. Wir erstellen hier keine Kopie, um die Leistung zu steigern. Wenn jedoch Änderungen erforderlich sind, erstellen Sie eine Kopie.

Rückgabe
  • ein Verweis auf eine TensorBuffer, die die Bilddaten enthält
Löst aus
IllegalStateException Wenn TensorImage nie Daten lädt

public int getWidth ()

Ruft die Bildbreite ab.

Löst aus
IllegalStateException Wenn TensorImage nie Daten lädt
IllegalArgumentException Die zugrunde liegenden Daten sind beschädigt.

public void load (TensorBuffer-Zwischenspeicher, ColorSpaceType colorSpaceType)

Lädt eine TensorBuffer, die Pixelwerte mit dem spezifischen ColorSpaceType enthält.

Unterstützt nur ColorSpaceType.RGB und ColorSpaceType.GRAYSCALE. Verwenden Sie load(TensorBuffer, ImageProperties) für andere Farbraumtypen.

Hinweis: Wenn der Datentyp von buffer nicht mit dem dieses TensorImage übereinstimmt, wird beim Aufrufen von getTensorBuffer() und getBuffer() die numerische Umwandlung und Einschränkung angewendet.

Parameter
Puffer TensorBuffer, das geladen werden soll. Die Form sollte bei RGB-Bildern entweder (h, w, 3) oder (1, h, w, 3) und bei GRAYSCALE-Bildern entweder (h, w) oder (1, h, w) sein.
colorSpaceType
Löst aus
IllegalArgumentException Die Form des Zwischenspeichers entspricht nicht dem Farbraumtyp oder der Farbraumtyp wird nicht unterstützt.

public void load (Bitmap-Bitmap)

Lädt ein Bitmap-Bildobjekt in dieses TensorImage-Element.

Hinweis: Wenn TensorImage einen anderen Datentyp als DataType.UINT8 hat, wird beim Aufrufen von getTensorBuffer() und getBuffer() die numerische Umwandlung und Einschränkung angewendet. Dabei wird Bitmap in TensorBuffer umgewandelt.

Wichtig: ÄNDERN Sie die Bitmap beim Laden einer Bitmap NICHT mehr von der Aufruferseite. Das TensorImage-Objekt hängt von der Bitmap ab. Wahrscheinlich wird auch die Bitmap geändert. Bei dieser Methode wird ein Null-Kopie-Ansatz für diese Bitmap ausgeführt, indem einfach der Verweis beibehalten wird. Erstellen Sie bei Bedarf mit bitmap.copy(bitmap.getConfig(), true) eine Kopie.

Hinweis: Die beste Leistung erzielen Sie, wenn Sie Bilder in derselben Form laden, um eine neue Arbeitsspeicherzuweisung zu vermeiden.

Parameter
Bitmap
Löst aus
IllegalArgumentException wenn bitmap nicht in ARGB_8888 enthalten ist

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

Lädt ein Ganzzahl-Array als RGB-Pixel in diesen TensorImage, um die darin enthaltenen Pixel darzustellen.

Hinweis: Die numerische Umwandlung und Einschränkung wird angewendet, um die Werte beim Aufrufen von getTensorBuffer() und getBuffer() in den Datentyp dieses TensorImages zu konvertieren.

Parameter
Pixel RGB-Pixel für das Bild
shape die Form des Bildes, entweder in der Form (h, w, 3) oder in der Form (1, h, w, 3)
Löst aus
IllegalArgumentException wenn die Form weder (h, w, 3) noch (1, h, w, 3) ist

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

Lädt ein Float-Array als RGB-Pixel in dieses TensorImage-Element, das die darin enthaltenen Pixel darstellt

Hinweis: Wenn TensorImage einen anderen Datentyp als DataType.FLOAT32 hat, wird beim Aufrufen von getTensorBuffer() und getBuffer() die numerische Umwandlung und Einschränkung angewendet.

Parameter
Pixel RGB-Pixel für das Bild
shape die Form des Bildes, entweder in der Form (h, w, 3) oder in der Form (1, h, w, 3)
Löst aus
IllegalArgumentException wenn die Form weder (h, w, 3) noch (1, h, w, 3) ist

public void load (ByteBuffer-Zwischenspeicher, ImageProperties imageProperties)

Lädt eine ByteBuffer, die Pixelwerte mit dem spezifischen ImageProperties enthält.

Hinweis: Wenn der Datentyp von buffer nicht mit dem dieses TensorImage übereinstimmt, wird beim Aufrufen von getTensorBuffer() und getBuffer() die numerische Umwandlung und Einschränkung angewendet.

Parameter
Puffer
imageProperties
Löst aus
IllegalArgumentException wenn die Zwischenspeichergröße unter der durch Bildhöhe, Breite und Farbraumtyp in ImageProperties angegebenen Bildgröße liegt

public void load (TensorBuffer-Zwischenspeicher, ImageProperties imageProperties)

Lädt eine TensorBuffer, die Pixelwerte mit dem spezifischen ImageProperties enthält.

Die Form von TensorBuffer wird nicht zur Bestimmung der Höhe und Breite des Bildes herangezogen. Legen Sie die Bildeigenschaften über ImageProperties fest.

Hinweis: Wenn der Datentyp von buffer nicht mit dem dieses TensorImage übereinstimmt, wird beim Aufrufen von getTensorBuffer() und getBuffer() die numerische Umwandlung und Einschränkung angewendet.

Parameter
Puffer
imageProperties
Löst aus
IllegalArgumentException wenn die Zwischenspeichergröße unter der durch Bildhöhe, Breite und Farbraumtyp in ImageProperties angegebenen Bildgröße liegt

public void Laden (Bild)

Lädt ein Image-Objekt in dieses TensorImage.

Mit dieser Methode wird hauptsächlich ein Image-Objekt als Modelleingabe in https://www.tensorflow.org/lite/inference_with_metadata/task_library/overview geladen. TensorImage mit Image wird von ImageProcessor nicht unterstützt.

* @throws geschmeidige Ausnahme, wenn ImageFormat von image nicht YUV_420_888 ist

Parameter
Image