TensorImage jest klasą opakowującą obiekt Image. Podczas korzystania z narzędzi do przetwarzania obrazu w bibliotece TFLite.support często najpierw konwertuje się obiekty obrazu w typach wariantowych na TensorImage.
Obecnie obsługiwane są tylko obrazy RGB, a kanał A jest zawsze ignorowany.
Szczegóły przechowywania danych: obiekt TensorImage
może mieć 2 potencjalne źródła prawdy: Bitmap
lub TensorBuffer
. TensorImage
utrzymuje stan i konwertuje jeden na drugi tylko w razie potrzeby. Typowym przypadkiem użycia TensorImage
jest najpierw załadowanie obrazu Bitmap
, następnie przetworzenie go za pomocą ImageProcessor
i na koniec pobranie bazowego ByteBuffer
z TensorBuffer
i wprowadzenie go do interpretera TFLite.
WAŻNE: aby osiągnąć najlepszą wydajność, TensorImage
unika kopiowania danych, gdy tylko jest to możliwe. Dlatego nie jest właścicielem swoich danych. Obiekty wywołujące nie powinny modyfikować obiektów danych przekazywanych do load(Bitmap)
lub load(TensorBuffer, ColorSpaceType)
.
WAŻNE: nie udowodniono, że wszystkie metody są bezpieczne dla wątków.
Konstruktorzy publiczni
Obraz Tensora () Inicjuje obiekt TensorImage . | |
Metody publiczne
statyczny obraz Tensora | createFrom ( TensorImage src, DataType typ danych) Tworzy głęboką kopię danego TensorImage z żądanym typem danych. |
statyczny obraz Tensora | fromBitmap (bitmapa bitmapowa) |
Bitmapa | pobierzBitmapę () Zwraca reprezentację Bitmap tego TensorImage . |
Bufor bajtów | pobierzBufor () Zwraca reprezentację ByteBuffer tego TensorImage z oczekiwanym typem danych. |
Typ przestrzeni kolorów | getColorSpaceType () Pobiera typ przestrzeni kolorów tego TensorImage . |
Typ danych | pobierzTypDanych () Pobiera typ danych tego TensorImage . |
wew | getHeight () Pobiera wysokość obrazu. |
Obraz | getMediaImage () Zwraca reprezentację Image tego TensorImage . |
Bufor Tensora | pobierzTensorBuffer () Zwraca reprezentację TensorBuffer tego TensorImage z oczekiwanym typem danych. |
wew | uzyskaj szerokość () Pobiera szerokość obrazu. |
próżnia | obciążenie (bufor TensorBuffer , ColorSpaceType colorSpaceType) Ładuje TensorBuffer zawierający wartości pikseli z określonym ColorSpaceType . |
próżnia | wczytaj (bitmapa bitmapowa) Ładuje obiekt obrazu Bitmap do tego TensorImage . |
próżnia | wczytaj (int[] piksele, int[] kształt) Ładuje tablicę int jako piksele RGB do tego TensorImage , reprezentującą piksele wewnątrz. |
próżnia | obciążenie (float[] piksele, int[] kształt) Ładuje tablicę zmiennoprzecinkową jako piksele RGB do tego TensorImage , reprezentującego piksele wewnątrz. |
próżnia | obciążenie (bufor ByteBuffer , ImageProperties imageProperties) Ładuje ByteBuffer zawierający wartości pikseli z określonymi ImageProperties . |
próżnia | ładowanie (bufor TensorBuffer , ImageProperties imageProperties) Ładuje TensorBuffer zawierający wartości pikseli z określonymi ImageProperties . |
próżnia | załaduj (obraz obrazu) Ładuje obiekt Image do tego TensorImage . |
Metody dziedziczone
Konstruktorzy publiczni
publiczny obraz Tensora ()
Inicjuje obiekt TensorImage
.
Uwaga: typ danych tego TensorImage
to DataType.UINT8
. Użyj TensorImage(DataType)
jeśli preferowane są inne typy danych.
publiczny TensorImage ( Typ danychDaneType )
Inicjuje obiekt TensorImage
o określonym typie danych.
Podczas pobierania TensorBuffer
lub ByteBuffer
z tego TensorImage
, na przykład przy użyciu getTensorBuffer()
i getBuffer()
, wartości danych zostaną przekonwertowane na określony typ danych.
Uwaga: kształt TensorImage
nie jest ustalony. Można go dostosować do kształtu obrazu ładowanego do tego TensorImage
.
Parametry
typ danych | oczekiwany typ danych wynikowego TensorBuffer . Typ jest zawsze ustalany przez cały okres istnienia TensorImage . Aby przekonwertować typ danych, użyj createFrom(TensorImage, DataType) w celu jednoczesnego utworzenia kopii i konwersji typu danych. |
---|
Rzuca
Wyjątek IllegalArgument | jeśli dataType nie jest ani DataType.UINT8 , ani DataType.FLOAT32 |
---|
Metody publiczne
publiczny statyczny TensorImage createFrom ( TensorImage src, DataType typ danych)
Tworzy głęboką kopię danego TensorImage
z żądanym typem danych.
Parametry
źródło | TensorImage z którego chcesz skopiować |
---|---|
typ danych | oczekiwany typ danych nowo utworzonego TensorImage |
Zwroty
-
TensorImage
, którego dane są kopiowane zsrc
, a typ danych todataType
publiczny statyczny TensorImage fromBitmap (bitmapa)
Inicjuje obiekt TensorImage
DataType.UINT8
z Bitmap
.
Parametry
bitmapa |
---|
publiczna mapa bitowa getBitmap ()
Zwraca reprezentację Bitmap
tego TensorImage
.
Jeśli przechowywane dane nie są uint8, zostaną zastosowane rzutowanie numeryczne i zaciskanie.
Należy pamiętać, że niezawodnym sposobem uzyskania pikseli z mapy bitowej ALPHA_8
jest użycie copyPixelsToBuffer
. Metody bitmapowe, takie jak `setPixels()` i `getPixels` nie działają.
Ważne: to tylko odniesienie. NIE MODYFIKUJ. Nie tworzymy tutaj kopii ze względu na wydajność, ale jeśli konieczna jest modyfikacja, wykonaj kopię.
Zwroty
- odniesienie do
Bitmap
w konfiguracjiARGB_8888
(kanał „A” jest zawsze nieprzezroczysty) lub wALPHA_8
, w zależności odColorSpaceType
tegoTensorBuffer
.
Rzuca
Wyjątek IllegalStateException | jeśli TensorImage nigdy nie ładuje danych |
---|
publiczny ByteBuffer getBuffer ()
Zwraca reprezentację ByteBuffer
tego TensorImage
z oczekiwanym typem danych.
Jeśli przechowywane dane różnią się od typu danych TensorImage
zostaną zastosowane rzutowanie numeryczne i zaciskanie.
Ważne: to tylko odniesienie. NIE MODYFIKUJ. Nie tworzymy tutaj kopii ze względu na wydajność, ale jeśli konieczna jest modyfikacja, wykonaj kopię.
Zasadniczo jest to skrót od getTensorBuffer().getBuffer()
.
Zwroty
- odwołanie do
ByteBuffer
, który przechowuje dane obrazu
Rzuca
Wyjątek IllegalStateException | jeśli TensorImage nigdy nie ładuje danych |
---|
publiczny ColorSpaceType getColorSpaceType ()
Pobiera typ przestrzeni kolorów tego TensorImage
.
Rzuca
Wyjątek IllegalStateException | jeśli TensorImage nigdy nie ładuje danych |
---|
publiczny typ danych getDataType ()
Pobiera typ danych tego TensorImage
.
Zwroty
- typ danych. Obecnie obsługiwane są tylko
DataType.UINT8
iDataType.FLOAT32
.
publiczny int getHeight ()
Pobiera wysokość obrazu.
Rzuca
Wyjątek IllegalStateException | jeśli TensorImage nigdy nie ładuje danych |
---|---|
Wyjątek IllegalArgument | jeśli podstawowe dane są uszkodzone |
obraz publiczny getMediaImage ()
Zwraca reprezentację Image
tego TensorImage
.
Ta metoda działa tylko wtedy, gdy TensorImage
jest wspierany przez Image
, co oznacza, że musisz najpierw załadować Image
poprzez load(Image)
.
Ważne: to tylko odniesienie. NIE MODYFIKUJ. Nie tworzymy tutaj kopii ze względu na wydajność, ale jeśli konieczna jest modyfikacja, wykonaj kopię.
Zwroty
- odniesienie do
Bitmap
w konfiguracjiARGB_8888
(kanał „A” jest zawsze nieprzezroczysty) lub wALPHA_8
, w zależności odColorSpaceType
tegoTensorBuffer
.
Rzuca
Wyjątek IllegalStateException | jeśli TensorImage nigdy nie ładuje danych |
---|
publiczny TensorBuffer getTensorBuffer ()
Zwraca reprezentację TensorBuffer
tego TensorImage
z oczekiwanym typem danych.
Jeśli przechowywane dane różnią się od typu danych TensorImage
zostaną zastosowane rzutowanie numeryczne i zaciskanie.
Ważne: to tylko odniesienie. NIE MODYFIKUJ. Nie tworzymy tutaj kopii ze względu na wydajność, ale jeśli konieczna jest modyfikacja, wykonaj kopię.
Zwroty
- odniesienie do
TensorBuffer
, który przechowuje dane obrazu
Rzuca
Wyjątek IllegalStateException | jeśli TensorImage nigdy nie ładuje danych |
---|
publiczny int getWidth ()
Pobiera szerokość obrazu.
Rzuca
Wyjątek IllegalStateException | jeśli TensorImage nigdy nie ładuje danych |
---|---|
Wyjątek IllegalArgument | jeśli podstawowe dane są uszkodzone |
publiczne obciążenie puste (bufor TensorBuffer , ColorSpaceType colorSpaceType)
Ładuje TensorBuffer
zawierający wartości pikseli z określonym ColorSpaceType
.
Obsługuje tylko ColorSpaceType.RGB
i ColorSpaceType.GRAYSCALE
. Użyj load(TensorBuffer, ImageProperties)
dla innych typów przestrzeni kolorów.
Uwaga: jeśli typ danych buffer
nie pasuje do tego TensorImage
, podczas wywoływania getTensorBuffer()
i getBuffer()
zostaną zastosowane rzutowanie numeryczne i zaciskanie.
Parametry
bufor | TensorBuffer który ma zostać załadowany. Jego kształt powinien wynosić (h, w, 3) lub (1, h, w, 3) w przypadku obrazów RGB oraz (h, w) lub (1, h, w) w przypadku obrazów w skali szarości |
---|---|
colorSpaceType |
Rzuca
Wyjątek IllegalArgument | jeśli kształt bufora nie jest zgodny z typem przestrzeni kolorów lub jeśli typ przestrzeni kolorów nie jest obsługiwany |
---|
publiczne puste ładowanie (mapa bitowa)
Ładuje obiekt obrazu Bitmap
do tego TensorImage
.
Uwaga: jeśli TensorImage
ma typ danych inny niż DataType.UINT8
, podczas wywoływania funkcji getTensorBuffer()
i getBuffer()
zostaną zastosowane rzutowanie numeryczne i zaciskanie , gdzie Bitmap
zostanie przekonwertowana na TensorBuffer
.
Ważne: podczas ładowania mapy bitowej NIE MODYFIKUJ już mapy bitowej od strony wywołującej. Obiekt TensorImage
będzie opierał się na mapie bitowej. Prawdopodobnie zmodyfikuje również bitmapę. W tej metodzie stosujemy metodę zerowej kopii dla tej mapy bitowej, po prostu utrzymując jej odniesienie. Użyj bitmap.copy(bitmap.getConfig(), true)
aby utworzyć kopię, jeśli to konieczne.
Uwaga: aby uzyskać najlepszą wydajność, należy załadować obrazy w tym samym kształcie, aby uniknąć ponownej alokacji pamięci.
Parametry
bitmapa |
---|
Rzuca
Wyjątek IllegalArgument | jeśli bitmap nie jest w ARGB_8888 |
---|
publiczne obciążenie puste (int[] piksele, int[] kształt)
Ładuje tablicę int jako piksele RGB do tego TensorImage
, reprezentującą piksele wewnątrz.
Uwaga: podczas wywoływania getTensorBuffer()
i getBuffer()
zastosowane zostanie rzutowanie numeryczne i zaciskanie w celu konwersji wartości na typ danych tego TensorImage
.
Parametry
pikseli | piksele RGB reprezentujące obraz |
---|---|
kształt | kształt obrazu powinien mieć formę (h, w, 3) lub formę (1, h, w, 3) |
Rzuca
Wyjątek IllegalArgument | jeśli kształt nie jest ani (h, w, 3), ani (1, h, w, 3) |
---|
publiczne obciążenie puste (float[] piksele, int[] kształt)
Ładuje tablicę zmiennoprzecinkową jako piksele RGB do tego TensorImage
, reprezentującego piksele wewnątrz.
Uwaga: jeśli TensorImage
ma typ danych inny niż DataType.FLOAT32
, podczas wywoływania metod getTensorBuffer()
i getBuffer()
zostaną zastosowane rzutowanie numeryczne i zaciskanie.
Parametry
pikseli | piksele RGB reprezentujące obraz |
---|---|
kształt | kształt obrazu powinien mieć formę (h, w, 3) lub formę (1, h, w, 3) |
Rzuca
Wyjątek IllegalArgument | jeśli kształt nie jest ani (h, w, 3), ani (1, h, w, 3) |
---|
publiczne puste ładowanie (bufor ByteBuffer , ImageProperties imageProperties)
Ładuje ByteBuffer
zawierający wartości pikseli z określonymi ImageProperties
.
Uwaga: jeśli typ danych buffer
nie pasuje do tego TensorImage
, podczas wywoływania getTensorBuffer()
i getBuffer()
zostaną zastosowane rzutowanie numeryczne i zaciskanie.
Parametry
bufor | |
---|---|
Właściwości obrazu |
Rzuca
Wyjątek IllegalArgument | jeśli rozmiar buforu jest mniejszy niż rozmiar obrazu wskazany przez wysokość, szerokość i typ przestrzeni kolorów we ImageProperties |
---|
publiczne obciążenie puste (bufor TensorBuffer , ImageProperties imageProperties)
Ładuje TensorBuffer
zawierający wartości pikseli z określonymi ImageProperties
.
Kształt TensorBuffer
nie będzie używany do określenia wysokości i szerokości obrazu. Ustaw właściwości obrazu poprzez ImageProperties
.
Uwaga: jeśli typ danych buffer
nie pasuje do tego TensorImage
, podczas wywoływania getTensorBuffer()
i getBuffer()
zostaną zastosowane rzutowanie numeryczne i zaciskanie.
Parametry
bufor | |
---|---|
Właściwości obrazu |
Rzuca
Wyjątek IllegalArgument | jeśli rozmiar buforu jest mniejszy niż rozmiar obrazu wskazany przez wysokość, szerokość i typ przestrzeni kolorów we ImageProperties |
---|
publiczne obciążenie puste (obraz obrazu)
Ładuje obiekt Image
do tego TensorImage
.
Głównym zastosowaniem tej metody jest załadowanie obiektu Image
jako danych wejściowych modelu do https://www.tensorflow.org/lite/inference_with_metadata/task_library/overview . TensorImage
obsługiwany przez Image
nie jest obsługiwany przez ImageProcessor
.
* @throws IllegalArgumentException, jeśli ImageFormat
image
nie jest YUV_420_888
Parametry
obraz |
---|