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 aussrc
kopiert werden und deren DatentypdataType
ist
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
Bitmap
in derARGB_8888
-Konfiguration („A“-Kanal ist immer intransparent) oder inALPHA_8
, je nachColorSpaceType
diesesTensorBuffer
.
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.UINT8
undDataType.FLOAT32
unterstü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
Bitmap
in derARGB_8888
-Konfiguration („A“-Kanal ist immer intransparent) oder inALPHA_8
, je nachColorSpaceType
diesesTensorBuffer
.
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 TensorImage
s 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 |
---|