TensorImage adalah class wrapper untuk objek Image. Saat menggunakan utilitas pemrosesan gambar di TFLite.support library, biasanya objek gambar dalam jenis varian dapat dikonversi terlebih dahulu ke TensorImage.
Saat ini, hanya gambar RGB yang didukung, dan saluran A selalu diabaikan.
Detail penyimpanan data: objek TensorImage
dapat memiliki 2 potensi sumber tepercaya: Bitmap
atau TensorBuffer
. TensorImage
mempertahankan
status dan hanya mengonversi satu status ke status lainnya jika diperlukan. Kasus penggunaan umum TensorImage
adalah memuat gambar Bitmap
terlebih dahulu, lalu memprosesnya menggunakan ImageProcessor
, dan terakhir mendapatkan ByteBuffer
yang mendasarinya dari TensorBuffer
dan memasukkannya ke penafsir TFLite.
PENTING: untuk mencapai performa terbaik, TensorImage
menghindari penyalinan data jika
memungkinkan. Oleh karena itu, entitas tersebut tidak memiliki datanya. Pemanggil tidak boleh mengubah objek data yang diteruskan ke load(Bitmap)
atau load(TensorBuffer, ColorSpaceType)
.
PENTING: semua metode tidak terbukti aman untuk thread.
Konstruktor Publik
TensorImage()
Menginisialisasi objek
TensorImage . |
|
TensorImage(dataType DataType)
Menginisialisasi objek
TensorImage dengan jenis data yang ditentukan. |
Metode Publik
TensorImage statis |
createFrom(TensorImage src, dataType DataType)
Membuat salinan mendalam dari
TensorImage tertentu dengan jenis data yang diinginkan. |
TensorImage statis |
fromBitmap(Bitmap bitmap)
|
Bitmap |
getBitmap()
Menampilkan representasi
Bitmap dari TensorImage ini. |
ByteBuffer |
getBuffer()
Menampilkan representasi
ByteBuffer dari TensorImage ini dengan jenis data yang diharapkan. |
ColorSpaceType |
getColorSpaceType()
Mendapatkan jenis ruang warna
TensorImage ini. |
DataType |
getDataType()
Mendapatkan jenis data
TensorImage ini. |
int |
getHeight()
Mendapatkan tinggi gambar.
|
Gambar |
getMediaImage()
Menampilkan representasi
Image dari TensorImage ini. |
TensorBuffer |
getTensorBuffer()
Menampilkan representasi
TensorBuffer dari TensorImage ini dengan jenis data
yang diharapkan. |
int |
getWidth()
Mendapatkan lebar gambar.
|
void |
load(buffer TensorBuffer, ColorSpaceType colorSpaceType)
Memuat
TensorBuffer yang berisi nilai piksel dengan ColorSpaceType tertentu. |
void |
load(Bitmap bitmap)
Memuat objek gambar
Bitmap ke TensorImage ini. |
void |
load(int[] piksel, bentuk int[])
Memuat array int sebagai piksel RGB ke dalam
TensorImage ini, yang mewakili piksel di dalamnya. |
void |
load(float[] piksel, bentuk int[])
Memuat array float sebagai piksel RGB ke dalam
TensorImage ini, yang mewakili piksel
di dalamnya. |
void |
load(buffer ByteBuffer, ImageProperties imageProperties)
Memuat
ByteBuffer yang berisi nilai piksel dengan ImageProperties tertentu. |
void |
load(buffer TensorBuffer, ImageProperties imageProperties)
Memuat
TensorBuffer yang berisi nilai piksel dengan ImageProperties tertentu. |
void |
load(Gambar)
Memuat objek
Image ke TensorImage ini. |
Metode Turunan
Konstruktor Publik
publik TensorImage ()
Menginisialisasi objek TensorImage
.
Catatan: jenis data TensorImage
ini adalah DataType.UINT8
. Gunakan TensorImage(DataType)
jika jenis data lain lebih disukai.
publik TensorImage (DataType dataType)
Menginisialisasi objek TensorImage
dengan jenis data yang ditentukan.
Saat mendapatkan TensorBuffer
atau ByteBuffer
dari TensorImage
ini, seperti menggunakan getTensorBuffer()
dan getBuffer()
, nilai data akan dikonversi ke jenis data yang ditentukan.
Catatan: bentuk TensorImage
tidak tetap. Bentuk ini dapat disesuaikan dengan bentuk gambar yang dimuat ke TensorImage
ini.
Parameter
dataType | jenis data yang diharapkan dari TensorBuffer yang dihasilkan. Jenis ini selalu diperbaiki selama masa aktif TensorImage . Untuk mengonversi jenis data, gunakan
createFrom(TensorImage, DataType) untuk membuat salinan dan mengonversi jenis data secara
bersamaan. |
---|
Menampilkan
IllegalArgumentException | jika dataType bukan DataType.UINT8 atau DataType.FLOAT32
|
---|
Metode Publik
publik statis TensorImage createFrom (TensorImage src, DataType dataType)
Membuat salinan mendalam dari TensorImage
tertentu dengan jenis data yang diinginkan.
Parameter
src | TensorImage untuk disalin dari |
---|---|
dataType | jenis data yang diharapkan dari TensorImage yang baru dibuat |
Hasil
TensorImage
yang datanya disalin darisrc
dan jenis datanya adalahdataType
publik statis TensorImage fromBitmap (Bitmap bitmap)
Menginisialisasi objek TensorImage
dari DataType.UINT8
dengan Bitmap
.
Parameter
bitmap |
---|
publik Bitmap getBitmap ()
Menampilkan representasi Bitmap
dari TensorImage
ini.
Transmisi dan pembatasan numerik akan diterapkan jika data yang disimpan bukan uint8.
Perhatikan bahwa cara yang andal untuk mendapatkan piksel dari Bitmap ALPHA_8
adalah dengan menggunakan copyPixelsToBuffer
. Metode bitmap seperti, `setPixels()` dan `getPixels` tidak berfungsi.
Penting: ini hanya referensi. JANGAN MENGUBAH. Kami tidak membuat salinan di sini karena masalah performa, tetapi jika perlu modifikasi, harap buat salinannya.
Hasil
- referensi ke
Bitmap
dalam konfigurasiARGB_8888
(saluran "A" selalu buram) atau dalamALPHA_8
, bergantung padaColorSpaceType
dariTensorBuffer
ini.
Menampilkan
IllegalStateException | jika TensorImage tidak pernah memuat data
|
---|
publik ByteBuffer getBuffer ()
Menampilkan representasi ByteBuffer
dari TensorImage
ini dengan jenis data yang diharapkan.
Transmisi dan klem numerik akan diterapkan jika data yang disimpan berbeda dengan jenis
data TensorImage
.
Penting: ini hanya referensi. JANGAN MENGUBAH. Kami tidak membuat salinan di sini karena masalah performa, tetapi jika perlu modifikasi, harap buat salinannya.
Pada dasarnya ini adalah jalan pintas untuk getTensorBuffer().getBuffer()
.
Hasil
- referensi ke
ByteBuffer
yang menyimpan data gambar
Menampilkan
IllegalStateException | jika TensorImage tidak pernah memuat data
|
---|
publik ColorSpaceType getColorSpaceType ()
Mendapatkan jenis ruang warna TensorImage
ini.
Menampilkan
IllegalStateException | jika TensorImage tidak pernah memuat data
|
---|
publik DataType getDataType ()
Mendapatkan jenis data TensorImage
ini.
Hasil
- tipe data. Saat ini, hanya
DataType.UINT8
danDataType.FLOAT32
yang didukung.
public int getHeight ()
Mendapatkan tinggi gambar.
Menampilkan
IllegalStateException | jika TensorImage tidak pernah memuat data |
---|---|
IllegalArgumentException | jika data yang mendasarinya rusak |
public Gambar getMediaImage ()
Menampilkan representasi Image
dari TensorImage
ini.
Metode ini hanya berfungsi saat TensorImage
didukung oleh Image
, yang berarti Anda harus memuat Image
melalui load(Image)
terlebih dahulu.
Penting: ini hanya referensi. JANGAN MENGUBAH. Kami tidak membuat salinan di sini karena masalah performa, tetapi jika perlu modifikasi, harap buat salinannya.
Hasil
- referensi ke
Bitmap
dalam konfigurasiARGB_8888
(saluran "A" selalu buram) atau dalamALPHA_8
, bergantung padaColorSpaceType
dariTensorBuffer
ini.
Menampilkan
IllegalStateException | jika TensorImage tidak pernah memuat data
|
---|
publik TensorBuffer getTensorBuffer ()
Menampilkan representasi TensorBuffer
dari TensorImage
ini dengan jenis data
yang diharapkan.
Transmisi dan klem numerik akan diterapkan jika data yang disimpan berbeda dengan jenis
data TensorImage
.
Penting: ini hanya referensi. JANGAN MENGUBAH. Kami tidak membuat salinan di sini karena masalah performa, tetapi jika perlu modifikasi, harap buat salinannya.
Hasil
- referensi ke
TensorBuffer
yang menyimpan data gambar
Menampilkan
IllegalStateException | jika TensorImage tidak pernah memuat data
|
---|
public int getWidth ()
Mendapatkan lebar gambar.
Menampilkan
IllegalStateException | jika TensorImage tidak pernah memuat data |
---|---|
IllegalArgumentException | jika data yang mendasarinya rusak |
public void load (buffer TensorBuffer, ColorSpaceType colorSpaceType)
Memuat TensorBuffer
yang berisi nilai piksel dengan ColorSpaceType
tertentu.
Hanya mendukung ColorSpaceType.RGB
dan ColorSpaceType.GRAYSCALE
. Gunakan load(TensorBuffer, ImageProperties)
untuk jenis ruang warna lainnya.
Catatan: jika jenis data buffer
tidak cocok dengan jenis data TensorImage
ini,
transmisi dan klem numerik akan diterapkan saat memanggil getTensorBuffer()
dan getBuffer()
.
Parameter
buffer | TensorBuffer yang akan dimuat. Bentuknya harus (h, w, 3) atau
(1, h, w, 3) untuk gambar RGB, dan (h, w) atau (1, h, w) untuk gambar GRAYSCALE |
---|---|
colorSpaceType |
Menampilkan
IllegalArgumentException | jika bentuk buffer tidak cocok dengan jenis ruang warna, atau jika jenis ruang warna tidak didukung |
---|
public void muat (Bitmap bitmap)
Memuat objek gambar Bitmap
ke TensorImage
ini.
Catatan: jika TensorImage
memiliki jenis data selain DataType.UINT8
, transmisi dan clamping numerik akan diterapkan saat memanggil getTensorBuffer()
dan getBuffer()
, dengan Bitmap
akan dikonversi menjadi TensorBuffer
.
Penting: saat memuat bitmap, JANGAN MEMODIFIKASI bitmap dari sisi pemanggil lagi. Objek
TensorImage
akan bergantung pada bitmap. Tindakan ini mungkin juga akan
memodifikasi bitmap tersebut.
Dalam metode ini, kami melakukan pendekatan zero-copy untuk bitmap tersebut, hanya dengan menyimpan
referensinya. Gunakan bitmap.copy(bitmap.getConfig(), true)
untuk membuat salinan jika perlu.
Catatan: untuk mendapatkan performa terbaik, muat gambar dalam bentuk yang sama untuk menghindari alokasi ulang memori.
Parameter
bitmap |
---|
Menampilkan
IllegalArgumentException | jika bitmap tidak dalam ARGB_8888
|
---|
public void load (int[] piksel, int[] shape)
Memuat array int sebagai piksel RGB ke dalam TensorImage
ini, yang mewakili piksel di dalamnya.
Catatan: transmisi dan klem numerik akan diterapkan untuk mengonversi nilai ke dalam jenis data
TensorImage
ini saat memanggil getTensorBuffer()
dan getBuffer()
.
Parameter
piksel | piksel RGB yang mewakili gambar |
---|---|
bentuk | bentuk gambar, harus dalam bentuk (h, w, 3), atau dalam bentuk (1, h, w, 3) |
Menampilkan
IllegalArgumentException | jika bentuknya bukan (h, w, 3) atau (1, h, w, 3) |
---|
public void load (float[] piksel, int[] shape)
Memuat array float sebagai piksel RGB ke dalam TensorImage
ini, yang mewakili piksel
di dalamnya.
Catatan: jika TensorImage
memiliki jenis data selain DataType.FLOAT32
,
transmisi dan klem numerik akan diterapkan saat memanggil getTensorBuffer()
dan getBuffer()
.
Parameter
piksel | piksel RGB yang mewakili gambar |
---|---|
bentuk | bentuk gambar, harus dalam bentuk (h, w, 3), atau dalam bentuk (1, h, w, 3) |
Menampilkan
IllegalArgumentException | jika bentuknya bukan (h, w, 3) atau (1, h, w, 3) |
---|
public void load (buffer ByteBuffer, ImageProperties imageProperties)
Memuat ByteBuffer
yang berisi nilai piksel dengan ImageProperties
tertentu.
Catatan: jika jenis data buffer
tidak cocok dengan jenis data TensorImage
ini,
transmisi dan klem numerik akan diterapkan saat memanggil getTensorBuffer()
dan getBuffer()
.
Parameter
buffer | |
---|---|
imageProperties |
Menampilkan
IllegalArgumentException | jika ukuran buffer kurang dari ukuran gambar yang ditunjukkan oleh tinggi, lebar, dan jenis ruang warna gambar di ImageProperties
|
---|
public void load (buffer TensorBuffer, ImageProperties imageProperties)
Memuat TensorBuffer
yang berisi nilai piksel dengan ImageProperties
tertentu.
Bentuk TensorBuffer
tidak akan digunakan untuk menentukan tinggi dan lebar gambar.
Tetapkan properti gambar melalui ImageProperties
.
Catatan: jika jenis data buffer
tidak cocok dengan jenis data TensorImage
ini,
transmisi dan klem numerik akan diterapkan saat memanggil getTensorBuffer()
dan getBuffer()
.
Parameter
buffer | |
---|---|
imageProperties |
Menampilkan
IllegalArgumentException | jika ukuran buffer kurang dari ukuran gambar yang ditunjukkan oleh tinggi, lebar, dan jenis ruang warna gambar di ImageProperties
|
---|
public void muat (Gambar gambar)
Memuat objek Image
ke TensorImage
ini.
Penggunaan utama metode ini adalah memuat objek Image
sebagai input model ke https://www.tensorflow.org/lite/inference_with_metadata/task_library/overview.
TensorImage
yang didukung oleh Image
tidak didukung oleh ImageProcessor
.
* @throws IllegalArgumentException jika ImageFormat
dari image
bukan YUV_420_888
Parameter
gambar |
---|