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ługisrc
i 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
Bitmap
w konfiguracjiARGB_8888
(kanał „A” jest zawsze nieprzezroczysty) lub w nazwieALPHA_8
, w zależności od parametruColorSpaceType
tegoTensorBuffer
.
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.UINT8
iDataType.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
Bitmap
w konfiguracjiARGB_8888
(kanał „A” jest zawsze nieprzezroczysty) lub w nazwieALPHA_8
, w zależności od parametruColorSpaceType
tegoTensorBuffer
.
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 |
---|