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.
Zobacz również
Konstruktorzy publiczni
|
TensorImage()
Inicjuje obiekt
TensorImage. |
|
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)
|
| 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ługisrci typu danych todataType
public static TensorImage fromBitmap (Bitmapa)
Inicjuje obiekt TensorImage obiektu DataType.UINT8 z Bitmap .
Parametry
| bitmapa |
|---|
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
Bitmapw konfiguracjiARGB_8888(kanał „A” jest zawsze nieprzezroczysty) lub w nazwieALPHA_8, w zależności od parametruColorSpaceTypetegoTensorBuffer.
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
- typ danych. Obecnie obsługiwane są tylko
DataType.UINT8iDataType.FLOAT32.
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
Bitmapw konfiguracjiARGB_8888(kanał „A” jest zawsze nieprzezroczysty) lub w nazwieALPHA_8, w zależności od parametruColorSpaceTypetegoTensorBuffer.
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 |
|---|