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.
Weitere Informationen
Public Constructors
|
TensorImage()
Initialisiert ein
TensorImage-Objekt. |
|
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)
|
| 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 aussrckopiert werden und deren DatentypdataTypeist
public static TensorImage fromBitmap (Bitmap-Bitmap)
Initialisiert ein TensorImage-Objekt von DataType.UINT8 mit einem Bitmap .
Parameter
| Bitmap |
|---|
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
- ein Verweis auf eine
Bitmapin derARGB_8888-Konfiguration („A“-Kanal ist immer intransparent) oder inALPHA_8, je nachColorSpaceTypediesesTensorBuffer.
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
- einen Datentyp. Derzeit werden nur
DataType.UINT8undDataType.FLOAT32unterstützt.
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
- ein Verweis auf eine
Bitmapin derARGB_8888-Konfiguration („A“-Kanal ist immer intransparent) oder inALPHA_8, je nachColorSpaceTypediesesTensorBuffer.
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 |
|---|