TensorImage adalah kelas pembungkus untuk objek Image. Saat menggunakan utilitas pemrosesan gambar di pustaka TFLite.support, biasanya untuk mengonversi objek gambar dalam jenis varian ke TensorImage pada awalnya.
Saat ini, hanya gambar RGB yang didukung, dan saluran A selalu diabaikan.
Detail penyimpanan data: objek TensorImage
mungkin memiliki 2 sumber kebenaran potensial: Bitmap
atau TensorBuffer
. TensorImage
mempertahankan status dan hanya mengonversi satu ke yang lain saat diperlukan. Kasus penggunaan khas TensorImage
adalah pertama-tama memuat gambar Bitmap
, kemudian memprosesnya menggunakan ImageProcessor
, dan akhirnya mendapatkan ByteBuffer
yang mendasari TensorBuffer
dan memasukkannya ke dalam penerjemah TFLite.
PENTING: untuk mencapai performa terbaik, TensorImage
menghindari penyalinan data jika memungkinkan. Oleh karena itu, ia tidak memiliki datanya sendiri. Penelepon tidak boleh mengubah objek data yang diteruskan ke load(Bitmap)
atau load(TensorBuffer, ColorSpaceType)
.
PENTING: semua metode tidak terbukti thread-safe.
Konstruktor Publik
Gambar Tensor () Menginisialisasi objek TensorImage . | |
TensorImage (Tipe DataTipe data) Menginisialisasi objek TensorImage dengan tipe data yang ditentukan. |
Metode Publik
Gambar Tensor statis | createFrom ( TensorImage src, DataType tipe data) Membuat salinan mendalam dari TensorImage tertentu dengan tipe data yang diinginkan. |
Gambar Tensor statis | dariBitmap (Bitmap bitmap) |
peta bit | getBitmap () Mengembalikan representasi Bitmap dari TensorImage ini. |
ByteBuffer | getBuffer () Mengembalikan representasi ByteBuffer dari TensorImage ini dengan tipe data yang diharapkan. |
ColorSpaceType | getColorSpaceType () Mendapatkan jenis ruang warna dari TensorImage ini. |
Tipe data | getDataType () Mendapatkan tipe data dari TensorImage ini. |
ke dalam | dapatkanTinggi () Mendapatkan tinggi gambar. |
Gambar | getMediaImage () Mengembalikan representasi Image dari TensorImage ini. |
TensorBuffer | getTensorBuffer () Mengembalikan representasi TensorBuffer dari TensorImage ini dengan tipe data yang diharapkan. |
ke dalam | dapatkanLebar () Mendapatkan lebar gambar. |
kosong | memuat ( buffer TensorBuffer , ColorSpaceType colorSpaceType) Memuat TensorBuffer yang berisi nilai piksel dengan ColorSpaceType tertentu. |
kosong | memuat (Bitmap bitmap) Memuat objek gambar Bitmap ke dalam TensorImage ini. |
kosong | memuat (int[] piksel, int[] bentuk) Memuat array int sebagai piksel RGB ke dalam TensorImage ini, yang mewakili piksel di dalamnya. |
kosong | memuat (float[] piksel, int[] bentuk) Memuat array float sebagai piksel RGB ke dalam TensorImage ini, yang mewakili piksel di dalamnya. |
kosong | memuat ( buffer ByteBuffer , ImageProperties imageProperties) Memuat ByteBuffer yang berisi nilai piksel dengan ImageProperties tertentu. |
kosong | memuat ( Buffer TensorBuffer , ImageProperties imageProperties) Memuat TensorBuffer yang berisi nilai piksel dengan ImageProperties tertentu. |
kosong | memuat (Gambar gambar) Memuat objek Image ke TensorImage ini. |
Metode yang Diwarisi
Konstruktor Publik
Gambar Tensor publik ()
Menginisialisasi objek TensorImage
.
Catatan: tipe data TensorImage
ini adalah DataType.UINT8
. Gunakan TensorImage(DataType)
jika tipe data lain lebih disukai.
TensorImage publik (Tipe dataTipe data)
Menginisialisasi objek TensorImage
dengan tipe data yang ditentukan.
Saat mendapatkan TensorBuffer
atau ByteBuffer
dari TensorImage
, seperti menggunakan getTensorBuffer()
dan getBuffer()
, nilai data akan dikonversi ke tipe data yang ditentukan.
Catatan: bentuk TensorImage
tidak tetap. Itu dapat disesuaikan dengan bentuk gambar yang dimuat ke TensorImage
ini.
Parameter
tipe data | tipe data yang diharapkan dari TensorBuffer yang dihasilkan. Jenisnya selalu diperbaiki selama masa pakai TensorImage . Untuk mengonversi tipe data, gunakan createFrom(TensorImage, DataType) untuk membuat salinan dan mengonversi tipe data secara bersamaan. |
---|
Melempar
Pengecualian Argumen Ilegal | 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 tipe data yang diinginkan.
Parameter
src | TensorImage untuk menyalin dari |
---|---|
tipe data | tipe data yang diharapkan dari TensorImage yang baru dibuat |
Kembali
- a
TensorImage
yang datanya disalin darisrc
dan tipe datanya adalahdataType
data
TensorImage statis publik dari Bitmap (Bitmap bitmap)
Menginisialisasi objek TensorImage
dari DataType.UINT8
dengan Bitmap
.
Parameter
peta bit |
---|
getBitmap Bitmap publik ()
Mengembalikan representasi Bitmap
dari TensorImage
ini.
Pengecoran numerik dan penjepitan akan diterapkan jika data yang disimpan bukan uint8.
Perhatikan bahwa, cara yang dapat diandalkan untuk mendapatkan piksel dari ALPHA_8
Bitmap adalah dengan menggunakan copyPixelsToBuffer
. Metode bitmap seperti, `setPixels()` dan `getPixels` tidak berfungsi.
Penting: ini hanya referensi. JANGAN DIUBAH. Kami tidak membuat salinan di sini untuk masalah kinerja, tetapi jika modifikasi diperlukan, silakan buat salinannya.
Kembali
- referensi ke
Bitmap
di konfigurasiARGB_8888
(saluran "A" selalu buram) atau diALPHA_8
, tergantung padaColorSpaceType
dariTensorBuffer
ini.
Melempar
Pengecualian Status Ilegal | jika TensorImage tidak pernah memuat data |
---|
publik ByteBuffer getBuffer ()
Mengembalikan representasi ByteBuffer
dari TensorImage
ini dengan tipe data yang diharapkan.
Pengecoran numerik dan penjepitan akan diterapkan jika data yang disimpan berbeda dari tipe data TensorImage
.
Penting: ini hanya referensi. JANGAN DIUBAH. Kami tidak membuat salinan di sini untuk masalah kinerja, tetapi jika modifikasi diperlukan, silakan buat salinannya.
Ini pada dasarnya adalah jalan pintas untuk getTensorBuffer().getBuffer()
.
Kembali
- referensi ke
ByteBuffer
yang menyimpan data gambar
Melempar
Pengecualian Status Ilegal | jika TensorImage tidak pernah memuat data |
---|
ColorSpaceType publik getColorSpaceType ()
Mendapatkan jenis ruang warna dari TensorImage
ini.
Melempar
Pengecualian Status Ilegal | jika TensorImage tidak pernah memuat data |
---|
Tipe Data publik getDataType ()
Mendapatkan tipe data dari TensorImage
ini.
Kembali
- sebuah tipe data. Saat ini hanya
DataType.UINT8
danDataType.FLOAT32
yang didukung.
publik int getTinggi ()
Mendapatkan tinggi gambar.
Melempar
Pengecualian Status Ilegal | jika TensorImage tidak pernah memuat data |
---|---|
Pengecualian Argumen Ilegal | jika data yang mendasarinya rusak |
Gambar publik getMediaImage ()
Mengembalikan representasi Image
dari TensorImage
ini.
Metode ini hanya berfungsi ketika TensorImage
didukung oleh Image
, artinya Anda harus terlebih dahulu memuat Image
melalui load(Image)
.
Penting: ini hanya referensi. JANGAN DIUBAH. Kami tidak membuat salinan di sini untuk masalah kinerja, tetapi jika modifikasi diperlukan, silakan buat salinannya.
Kembali
- referensi ke
Bitmap
di konfigurasiARGB_8888
(saluran "A" selalu buram) atau diALPHA_8
, tergantung padaColorSpaceType
dariTensorBuffer
ini.
Melempar
Pengecualian Status Ilegal | jika TensorImage tidak pernah memuat data |
---|
publik TensorBuffer getTensorBuffer ()
Mengembalikan representasi TensorBuffer
dari TensorImage
ini dengan tipe data yang diharapkan.
Pengecoran numerik dan penjepitan akan diterapkan jika data yang disimpan berbeda dari tipe data TensorImage
.
Penting: ini hanya referensi. JANGAN DIUBAH. Kami tidak membuat salinan di sini untuk masalah kinerja, tetapi jika modifikasi diperlukan, silakan buat salinannya.
Kembali
- referensi ke
TensorBuffer
yang menyimpan data gambar
Melempar
Pengecualian Status Ilegal | jika TensorImage tidak pernah memuat data |
---|
publik int getWidth ()
Mendapatkan lebar gambar.
Melempar
Pengecualian Status Ilegal | jika TensorImage tidak pernah memuat data |
---|---|
Pengecualian Argumen Ilegal | jika data yang mendasarinya rusak |
beban kekosongan publik (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 tipe ruang warna lainnya.
Catatan: jika tipe data buffer
tidak cocok dengan TensorImage
ini, casting numerik dan clamping akan diterapkan saat memanggil getTensorBuffer()
dan getBuffer()
.
Parameter
penyangga | 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 GREYSCALE |
---|---|
colorSpaceType |
Melempar
Pengecualian Argumen Ilegal | jika bentuk buffer tidak sesuai dengan jenis ruang warna, atau jika jenis ruang warna tidak didukung |
---|
beban kekosongan publik (bitmap bitmap)
Memuat objek gambar Bitmap
ke dalam TensorImage
ini.
Catatan: jika TensorImage
memiliki tipe data selain DataType.UINT8
, casting numerik dan penjepitan akan diterapkan saat memanggil getTensorBuffer()
dan getBuffer()
, di mana Bitmap
akan diubah menjadi TensorBuffer
.
Penting: saat memuat bitmap, JANGAN MENGUBAH bitmap dari sisi pemanggil lagi. Objek TensorImage
akan mengandalkan bitmap. Ini mungkin akan memodifikasi bitmap juga. Dalam metode ini, kami melakukan pendekatan nol-salinan untuk bitmap itu, hanya dengan memegang referensinya. Gunakan bitmap.copy(bitmap.getConfig(), true)
untuk membuat salinan jika perlu.
Catatan: untuk mendapatkan performa terbaik, harap muat gambar dalam bentuk yang sama untuk menghindari alokasi ulang memori.
Parameter
peta bit |
---|
Melempar
Pengecualian Argumen Ilegal | jika bitmap tidak dalam ARGB_8888 |
---|
beban kekosongan publik (int[] piksel, int[] bentuk)
Memuat array int sebagai piksel RGB ke dalam TensorImage
ini, yang mewakili piksel di dalamnya.
Catatan: casting numerik dan penjepitan akan diterapkan untuk mengonversi nilai menjadi tipe data TensorImage
ini saat memanggil getTensorBuffer()
dan getBuffer()
.
Parameter
piksel | piksel RGB yang mewakili gambar |
---|---|
membentuk | bentuk gambar, harus dalam bentuk (h, w, 3), atau dalam bentuk (1, h, w, 3) |
Melempar
Pengecualian Argumen Ilegal | jika bentuknya bukan (h, w, 3) atau (1, h, w, 3) |
---|
beban batal publik (float[] piksel, int[] bentuk)
Memuat array float sebagai piksel RGB ke dalam TensorImage
ini, yang mewakili piksel di dalamnya.
Catatan: jika TensorImage
memiliki tipe data selain DataType.FLOAT32
, casting numerik dan penjepitan akan diterapkan saat memanggil getTensorBuffer()
dan getBuffer()
.
Parameter
piksel | piksel RGB yang mewakili gambar |
---|---|
membentuk | bentuk gambar, harus dalam bentuk (h, w, 3), atau dalam bentuk (1, h, w, 3) |
Melempar
Pengecualian Argumen Ilegal | jika bentuknya bukan (h, w, 3) atau (1, h, w, 3) |
---|
beban batal publik (buffer ByteBuffer , ImageProperties imageProperties)
Memuat ByteBuffer
yang berisi nilai piksel dengan ImageProperties
tertentu.
Catatan: jika tipe data buffer
tidak cocok dengan TensorImage
ini, casting numerik dan clamping akan diterapkan saat memanggil getTensorBuffer()
dan getBuffer()
.
Parameter
penyangga | |
---|---|
gambarProperties |
Melempar
Pengecualian Argumen Ilegal | jika ukuran buffer kurang dari ukuran gambar yang ditunjukkan oleh tinggi gambar, lebar, dan jenis ruang warna di ImageProperties |
---|
beban kekosongan publik (buffer TensorBuffer , ImageProperties imageProperties)
Memuat TensorBuffer
yang berisi nilai piksel dengan ImageProperties
tertentu.
Bentuk TensorBuffer
tidak akan digunakan untuk menentukan tinggi dan lebar gambar. Setel properti gambar melalui ImageProperties
.
Catatan: jika tipe data buffer
tidak cocok dengan TensorImage
ini, casting numerik dan clamping akan diterapkan saat memanggil getTensorBuffer()
dan getBuffer()
.
Parameter
penyangga | |
---|---|
gambarProperties |
Melempar
Pengecualian Argumen Ilegal | jika ukuran buffer kurang dari ukuran gambar yang ditunjukkan oleh tinggi gambar, lebar, dan jenis ruang warna di ImageProperties |
---|
beban kekosongan publik (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
didukung oleh Image
tidak didukung oleh ImageProcessor
.
* @throws IllegalArgumentException jika ImageFormat
image
bukan YUV_420_888
Parameter
gambar |
---|