TensorImage

TensorImage kelas publik

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)
Menginisialisasi objek TensorImage dari DataType.UINT8 dengan 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 dari src dan tipe datanya adalah dataType data

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
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

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
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
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