TensorImage

klasa publiczna TensorImage

TensorImage to klasa otoki obiektu Image. Gdy korzystasz z narzędzi do przetwarzania obrazów w bibliotece TFLite.support, często konwertujesz obiekty obrazów w typach wariantów na TensorImage.

Obecnie obsługiwane są tylko obrazy RGB, a kanał A jest zawsze ignorowany.

Szczegóły miejsca na dane: obiekt TensorImage może mieć 2 potencjalne źródła informacji: Bitmap lub TensorBuffer. TensorImage zachowuje stan i w razie potrzeby konwertuje jeden na drugi. Typowym przypadkiem użycia funkcji TensorImage jest pierwsze wczytanie obrazu Bitmap, następnie przetworzenie go za pomocą metody ImageProcessor, a następnie pobranie bazowego ByteBuffer elementu TensorBuffer i przekazanie go do interpretera TFLite.

WAŻNE: aby uzyskać najlepszą wydajność, funkcja TensorImage unika kopiowania danych, gdy jest to możliwe. Dlatego nie jest właścicielem swoich danych. Wywołujący nie powinni modyfikować obiektów danych przekazywanych do load(Bitmap) lub load(TensorBuffer, ColorSpaceType).

WAŻNE: nie wszystkie metody zostały zatwierdzone jako bezpieczne wątkowo.

Konstruktorzy publiczni

TensorImage()
Inicjuje obiekt TensorImage.
TensorImage(DataType),
Inicjuje obiekt TensorImage o określonym typie danych.

Metody publiczne

statyczny TensorImage
createFrom(TensorImage src, typ danych DataType)
Tworzy głęboką kopię danego elementu TensorImage z odpowiednim typem danych.
statyczny TensorImage
fromBitmap(mapa bitowa)
Inicjuje obiekt TensorImage obiektu DataType.UINT8 z Bitmap .
Bitmapa
getBitmap(),
Zwraca reprezentację obiektu TensorImage (Bitmap).
ByteBuffer
getBuffer(),
Zwraca reprezentację obiektu TensorImage (ByteBuffer) z oczekiwanym typem danych.
ColorSpaceType
getColorSpaceType()
Pobiera typ przestrzeni kolorów obiektu TensorImage.
DataType
getDataType(),
Pobiera typ danych tego elementu (TensorImage).
int
getHeight()
Pobiera wysokość obrazu.
Obraz
getMediaImage()
Zwraca reprezentację obiektu TensorImage (Image).
TensorBuffer
getTensorBuffer(),
Zwraca reprezentację obiektu TensorImage (TensorBuffer) z oczekiwanym typem danych.
int
getWidth()
Pobiera szerokość obrazu.
void
load(bufor TensorBuffer, ColorSpaceType colorSpaceType)
Wczytuje obiekt TensorBuffer zawierający wartości pikseli z konkretną wartością ColorSpaceType.
void
load(bitmapy bitmapy),
Ładuje obiekt obrazu Bitmap do tego urządzenia TensorImage.
void
load(int[] piksele, int[] kształt)
Ładuje tablicę int jako piksele RGB do tego obiektu TensorImage, reprezentując znajdujące się w nim piksele.
void
load(float[] piksele, int[] kształt)
Ładuje tablicę zmiennoprzecinkową jako piksele RGB do tego elementu TensorImage, reprezentując znajdujące się w nim piksele.
void
load(bufor ByteBuffer, ImageProperties imageWłaściwości)
Wczytuje obiekt ByteBuffer zawierający wartości pikseli z konkretną wartością ImageProperties.
void
load(bufor TensorBuffer, ImageProperties obrazu)
Wczytuje obiekt TensorBuffer zawierający wartości pikseli z konkretną wartością ImageProperties.
void
load(obraz obrazu)
Ładuje obiekt Image do tego urządzenia TensorImage.

Metody dziedziczone

Konstruktorzy publiczni

public TensorImage ()

Inicjuje obiekt TensorImage.

Uwaga: typ danych tego zasobu (TensorImage) to DataType.UINT8. Jeśli preferowane są inne typy danych, użyj wartości TensorImage(DataType).

public TensorImage (DataType dataType)

Inicjuje obiekt TensorImage o określonym typie danych.

Podczas pobierania właściwości TensorBuffer lub ByteBuffer z tego elementu typu TensorImage, np. przy użyciu getTensorBuffer() i getBuffer(), wartości danych zostaną przekonwertowane na określony typ danych.

Uwaga: kształt elementu TensorImage nie jest stały. Możesz go dostosować do kształtu obrazu wczytywanego na to urządzenie TensorImage.

Parametry
dataType oczekiwany typ danych wynikowych elementów TensorBuffer. Typ jest zawsze stały w czasie życia obiektu TensorImage. Aby przekonwertować typ danych, za pomocą funkcji createFrom(TensorImage, DataType) utwórz kopię i przekonwertuj typ danych jednocześnie.
Rzuty
IllegalArgumentException jeśli dataType nie zawiera wartości DataType.UINT8 ani DataType.FLOAT32

Metody publiczne

public static TensorImage createFrom (TensorImage src, DataType)

Tworzy głęboką kopię danego elementu TensorImage z odpowiednim typem danych.

Parametry
src TensorImage, z którego chcesz skopiować dane
dataType oczekiwany typ danych nowo utworzonych TensorImage
Zwroty
  • TensorImage, którego dane są kopiowane z usługi src i typu danych to dataType

public Bitmapa getBitmap ()

Zwraca reprezentację obiektu TensorImage (Bitmap).

Jeśli przechowywane dane nie są uint8, stosowane jest liczbowe rzutowanie i ograniczanie zakresu.

Pamiętaj, że niezawodnym sposobem na uzyskanie pikseli z mapy bitowej ALPHA_8 jest użycie copyPixelsToBuffer. Metody bitmapy, takie jak „setPixels()” i „getPixels”, nie działają.

Ważne: to tylko punkt odniesienia. NIE MODYFIKOWAĆ. Nie tworzymy tutaj kopii ze względu na problemy z wydajnością, ale jeśli konieczna jest modyfikacja, utwórz jej kopię.

Zwroty
  • odniesienie do Bitmap w konfiguracji ARGB_8888 (kanał „A” jest zawsze nieprzezroczysty) lub w nazwie ALPHA_8, w zależności od parametru ColorSpaceType tego TensorBuffer.
Rzuty
IllegalStateException jeśli TensorImage nigdy nie wczytuje danych

public ByteBuffer getBuffer ()

Zwraca reprezentację obiektu TensorImage (ByteBuffer) z oczekiwanym typem danych.

Jeśli przechowywane dane różnią się od typu danych obiektu TensorImage, stosowane jest liczbowe rzutowanie i ograniczanie zakresu.

Ważne: to tylko punkt odniesienia. NIE MODYFIKOWAĆ. Nie tworzymy tutaj kopii ze względu na problemy z wydajnością, ale jeśli konieczna jest modyfikacja, utwórz jej kopię.

To właściwie skrót dla języka: getTensorBuffer().getBuffer().

Zwroty
  • odwołanie do elementu ByteBuffer, który zawiera dane obrazu
Rzuty
IllegalStateException jeśli TensorImage nigdy nie wczytuje danych

public ColorSpaceType getColorSpaceType ()

Pobiera typ przestrzeni kolorów obiektu TensorImage.

Rzuty
IllegalStateException jeśli TensorImage nigdy nie wczytuje danych

public DataType getDataType ()

Pobiera typ danych tego elementu (TensorImage).

Zwroty

public int getHeight ()

Pobiera wysokość obrazu.

Rzuty
IllegalStateException jeśli TensorImage nigdy nie wczytuje danych
IllegalArgumentException jeśli dane bazowe są uszkodzone;

public Obraz getMediaImage ()

Zwraca reprezentację obiektu TensorImage (Image).

Ta metoda działa tylko wtedy, gdy TensorImage korzysta z Image, co oznacza, że musisz najpierw wczytać Image do load(Image).

Ważne: to tylko punkt odniesienia. NIE MODYFIKOWAĆ. Nie tworzymy tutaj kopii ze względu na problemy z wydajnością, ale jeśli konieczna jest modyfikacja, utwórz jej kopię.

Zwroty
  • odniesienie do Bitmap w konfiguracji ARGB_8888 (kanał „A” jest zawsze nieprzezroczysty) lub w nazwie ALPHA_8, w zależności od parametru ColorSpaceType tego TensorBuffer.
Rzuty
IllegalStateException jeśli TensorImage nigdy nie wczytuje danych

publiczna TensorBuffer getTensorBuffer ()

Zwraca reprezentację obiektu TensorImage (TensorBuffer) z oczekiwanym typem danych.

Jeśli przechowywane dane różnią się od typu danych obiektu TensorImage, stosowane jest liczbowe rzutowanie i ograniczanie zakresu.

Ważne: to tylko punkt odniesienia. NIE MODYFIKOWAĆ. Nie tworzymy tutaj kopii ze względu na problemy z wydajnością, ale jeśli konieczna jest modyfikacja, utwórz jej kopię.

Zwroty
  • odwołanie do elementu TensorBuffer, który zawiera dane obrazu
Rzuty
IllegalStateException jeśli TensorImage nigdy nie wczytuje danych

public int getWidth ()

Pobiera szerokość obrazu.

Rzuty
IllegalStateException jeśli TensorImage nigdy nie wczytuje danych
IllegalArgumentException jeśli dane bazowe są uszkodzone;

public void load (TensorBuffer buffer, ColorSpaceType colorSpaceType)

Wczytuje obiekt TensorBuffer zawierający wartości pikseli z konkretną wartością ColorSpaceType.

Obsługiwane są tylko wartości ColorSpaceType.RGB i ColorSpaceType.GRAYSCALE. W przypadku innych typów przestrzeni kolorów użyj load(TensorBuffer, ImageProperties).

Uwaga: jeśli typ danych buffer nie jest zgodny z typem danych TensorImage, podczas wywoływania funkcji getTensorBuffer() i getBuffer() zostaną zastosowane rzutowanie numeryczne i ograniczanie zakresu.

Parametry
bufor TensorBuffer do wczytania. Kształt obrazu powinien mieć postać (h, s, 3) lub (1, h, w, 3) w przypadku obrazów RGB, a w przypadku obrazów RGB – (h, w) lub (1, h, w)
colorSpaceType
Rzuty
IllegalArgumentException jeśli kształt bufora nie pasuje do typu przestrzeni kolorów lub typ przestrzeni kolorów nie jest obsługiwany

public void load (bitmapa bitmapy)

Ładuje obiekt obrazu Bitmap do tego urządzenia TensorImage.

Uwaga: jeśli TensorImage ma typ danych inny niż DataType.UINT8, podczas wywoływania funkcji getTensorBuffer() i getBuffer() wartość Bitmap zostanie skonwertowana na wartość TensorBuffer, a funkcja przesyłania numerycznego i ograniczanie zakresu będą stosowane.

Ważne: podczas wczytywania bitmapy NIE MODYFIKUJ już bitmapy od strony wywołującego. Obiekt TensorImage będzie korzystać z bitmapy. Prawdopodobnie spowoduje też modyfikację bitmapy. W tej metodzie stosujemy metodę niekopiową dla tej bitmapy, utrzymując tylko jej odwołanie. W razie potrzeby użyj usługi bitmap.copy(bitmap.getConfig(), true), aby utworzyć kopię.

Uwaga: aby uzyskać najlepszą wydajność, ładuj obrazy w tym samym kształcie, aby uniknąć ponownego przydziału pamięci.

Parametry
bitmapa
Rzuty
IllegalArgumentException jeśli bitmap nie należy do ARGB_8888

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

Ładuje tablicę int jako piksele RGB do tego obiektu TensorImage, reprezentując znajdujące się w nim piksele.

Uwaga: podczas wywoływania funkcji getTensorBuffer() i getBuffer() wartości będą konwertowane na typ danych obiektu TensorImage za pomocą przesyłania numerycznego i ograniczania zakresu.

Parametry
piks. piksele RGB reprezentujące obraz,
kształt kształt obrazu (h, s, 3) lub obraz (1, h, w, 3)
Rzuty
IllegalArgumentException jeśli kształt nie jest wartością (h, w, 3) ani (1, h, w, 3)

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

Ładuje tablicę zmiennoprzecinkową jako piksele RGB do tego elementu TensorImage, reprezentując znajdujące się w nim piksele.

Uwaga: jeśli typ danych TensorImage ma inny typ danych niż DataType.FLOAT32, podczas wywoływania funkcji getTensorBuffer() i getBuffer() stosowane jest rzutowanie numeryczne i ograniczanie zakresu.

Parametry
piks. piksele RGB reprezentujące obraz,
kształt kształt obrazu (h, s, 3) lub obraz (1, h, w, 3)
Rzuty
IllegalArgumentException jeśli kształt nie jest wartością (h, w, 3) ani (1, h, w, 3)

public void load (ByteBuffer, ImageProperties imageWłaściwości)

Wczytuje obiekt ByteBuffer zawierający wartości pikseli z konkretną wartością ImageProperties.

Uwaga: jeśli typ danych buffer nie jest zgodny z typem danych TensorImage, podczas wywoływania funkcji getTensorBuffer() i getBuffer() zostaną zastosowane rzutowanie numeryczne i ograniczanie zakresu.

Parametry
bufor
imageProperties
Rzuty
IllegalArgumentException jeśli rozmiar bufora jest mniejszy niż rozmiar obrazu określony przez wysokość, szerokość i typ przestrzeni kolorów obrazu w ImageProperties

public void load (TensorBuffer buffer, ImageProperties imageWłaściwości)

Wczytuje obiekt TensorBuffer zawierający wartości pikseli z konkretną wartością ImageProperties.

Kształt elementu TensorBuffer nie będzie używany do określania wysokości i szerokości obrazu. Ustaw właściwości obrazu za pomocą ImageProperties.

Uwaga: jeśli typ danych buffer nie jest zgodny z typem danych TensorImage, podczas wywoływania funkcji getTensorBuffer() i getBuffer() zostaną zastosowane rzutowanie numeryczne i ograniczanie zakresu.

Parametry
bufor
imageProperties
Rzuty
IllegalArgumentException jeśli rozmiar bufora jest mniejszy niż rozmiar obrazu określony przez wysokość, szerokość i typ przestrzeni kolorów obrazu w ImageProperties

public void load (Obraz obrazu)

Ładuje obiekt Image do tego urządzenia TensorImage.

Głównym zastosowaniem tej metody jest wczytywanie obiektu Image jako danych wejściowych modelu do interfejsu https://www.tensorflow.org/lite/inference_with_metadata/task_library/overview. Metoda TensorImage obsługiwana przez Image nie jest obsługiwana przez ImageProcessor.

* @throws IllegalArgumentException, jeśli ImageFormat w image nie ma wartości YUV_420_888

Parametry
obraz