TensorImage — это класс-оболочка для объекта Image. При использовании утилит обработки изображений в библиотеке TFLite.support обычно сначала преобразуют объекты изображений в варианты типов в TensorImage.
В настоящее время поддерживаются только изображения RGB, а канал A всегда игнорируется.
Детали хранения данных: объект TensorImage
может иметь 2 потенциальных источника правды: Bitmap
или TensorBuffer
. TensorImage
поддерживает состояние и преобразует одно в другое только при необходимости. Типичный вариант использования TensorImage
— сначала загрузить Bitmap
изображение, затем обработать его с помощью ImageProcessor
и, наконец, получить базовый ByteBuffer
TensorBuffer
и передать его интерпретатору TFLite.
ВАЖНО: для достижения наилучшей производительности TensorImage
избегает копирования данных, когда это возможно. Следовательно, он не владеет своими данными. Вызывающие объекты не должны изменять объекты данных, которые передаются в load(Bitmap)
или load(TensorBuffer, ColorSpaceType)
.
ВАЖНО: не доказано, что все методы являются потокобезопасными.
Смотрите также
Публичные конструкторы
ТензорИзображение () Инициализирует объект TensorImage . | |
Публичные методы
статический TensorImage | createFrom ( TensorImage src, DataType dataType) Создает глубокую копию данного TensorImage с желаемым типом данных. |
статический TensorImage | fromBitmap (Растровое изображение) |
Битовая карта | получить битмап () Возвращает Bitmap представление этого TensorImage . |
Байтбуфер | получить буфер () Возвращает представление ByteBuffer этого TensorImage с ожидаемым типом данных. |
ColorSpaceType | получитьColorSpaceType () Получает тип цветового пространства этого TensorImage . |
Тип данных | получить тип данных () Получает тип данных этого TensorImage . |
инт | получитьвысоту () Получает высоту изображения. |
Изображение | получитьмедиаизображение () Возвращает представление Image этого TensorImage . |
TensorBuffer | получитьTensorBuffer () Возвращает представление TensorBuffer этого TensorImage с ожидаемым типом данных. |
инт | получитьширину () Получает ширину изображения. |
пустота | load (буфер TensorBuffer , ColorSpaceType colorSpaceType) Загружает TensorBuffer , содержащий значения пикселей с определенным ColorSpaceType . |
пустота | загрузить (растровое изображение) Загружает объект изображения Bitmap в этот TensorImage . |
пустота | загрузка (int[] пикселей, форма int[]) Загружает массив int в виде пикселей RGB в этот TensorImage , представляя пиксели внутри. |
пустота | загрузка (плавающие [] пиксели, форма int []) Загружает массив с плавающей запятой в виде пикселей RGB в этот TensorImage , представляющий пиксели внутри. |
пустота | загрузить (буфер ByteBuffer , свойства изображения imageProperties) Загружает ByteBuffer , содержащий значения пикселей с определенными ImageProperties . |
пустота | загрузка (буфер TensorBuffer , ImageProperties imageProperties) Загружает TensorBuffer , содержащий значения пикселей с определенными ImageProperties . |
пустота | загрузить (изображение изображения) Загружает объект Image в этот TensorImage . |
Унаследованные методы
Публичные конструкторы
общедоступный TensorImage ()
Инициализирует объект TensorImage
.
Примечание. Тип данных этого TensorImage
— DataType.UINT8
. Используйте TensorImage(DataType)
, если предпочтительны другие типы данных.
общедоступный TensorImage ( DataType тип данных)
Инициализирует объект TensorImage
с указанным типом данных.
При получении TensorBuffer
или ByteBuffer
из этого TensorImage
, например, с помощью getTensorBuffer()
и getBuffer()
, значения данных будут преобразованы в указанный тип данных.
Примечание: форма TensorImage
не фиксирована. Его можно настроить в соответствии с формой изображения, загружаемого в этот TensorImage
.
Параметры
тип данных | ожидаемый тип данных результирующего TensorBuffer . Тип всегда фиксируется во время жизни TensorImage . Чтобы преобразовать тип данных, используйте createFrom(TensorImage, DataType) для создания копии и одновременного преобразования типа данных. |
---|
Броски
IllegalArgumentException | если dataType не является ни DataType.UINT8 , ни DataType.FLOAT32 |
---|
Публичные методы
общедоступный статический TensorImage createFrom ( TensorImage src, DataType dataType)
Создает глубокую копию данного TensorImage
с желаемым типом данных.
Параметры
источник | TensorImage для копирования из |
---|---|
тип данных | ожидаемый тип данных вновь созданного TensorImage |
Возвращает
-
TensorImage
, данные которого скопированы изsrc
, а тип данных —dataType
общедоступный статический TensorImage fromBitmap (растровое изображение Bitmap)
Инициализирует объект TensorImage
DataType.UINT8
с помощью Bitmap
.
Параметры
битовая карта |
---|
публичное растровое изображение getBitmap ()
Возвращает Bitmap
представление этого TensorImage
.
Числовое приведение и ограничение будут применяться, если сохраненные данные не uint8.
Обратите внимание, что надежный способ получить пиксели из растрового изображения ALPHA_8
— использовать copyPixelsToBuffer
. Методы растрового изображения, такие как `setPixels()` и `getPixels`, не работают.
Важно: это только ссылка. НЕ ИЗМЕНЯТЬ. Мы не создаем здесь копию из соображений производительности, но если необходимы изменения, сделайте копию.
Возвращает
- ссылка на
Bitmap
в конфигурацииARGB_8888
(канал "A" всегда непрозрачен) или вALPHA_8
, в зависимости отColorSpaceType
этогоTensorBuffer
.
Броски
Илегалстатеексцептион | если TensorImage никогда не загружает данные |
---|
публичный байтбуфер getBuffer ()
Возвращает представление ByteBuffer
этого TensorImage
с ожидаемым типом данных.
Числовое приведение и ограничение будут применяться, если сохраненные данные отличаются от типа данных TensorImage
.
Важно: это только ссылка. НЕ ИЗМЕНЯТЬ. Мы не создаем здесь копию из соображений производительности, но если необходимы изменения, сделайте копию.
По сути, это сокращение от getTensorBuffer().getBuffer()
.
Возвращает
- ссылка на
ByteBuffer
, который содержит данные изображения
Броски
Илегалстатеексцептион | если TensorImage никогда не загружает данные |
---|
общедоступный ColorSpaceType getColorSpaceType ()
Получает тип цветового пространства этого TensorImage
.
Броски
Илегалстатеексцептион | если TensorImage никогда не загружает данные |
---|
общедоступный тип данных getDataType ()
Получает тип данных этого TensorImage
.
Возвращает
- тип данных. В настоящее время поддерживаются только
DataType.UINT8
иDataType.FLOAT32
.
общедоступный интервал getHeight ()
Получает высоту изображения.
Броски
Илегалстатеексцептион | если TensorImage никогда не загружает данные |
---|---|
IllegalArgumentException | если базовые данные повреждены |
общедоступное изображение getMediaImage ()
Возвращает представление Image
этого TensorImage
.
Этот метод работает только тогда, когда TensorImage
поддерживается Image
, то есть вам нужно сначала загрузить Image
через load(Image)
.
Важно: это только ссылка. НЕ ИЗМЕНЯТЬ. Мы не создаем здесь копию из соображений производительности, но если необходимы изменения, сделайте копию.
Возвращает
- ссылка на
Bitmap
в конфигурацииARGB_8888
(канал "A" всегда непрозрачен) или вALPHA_8
, в зависимости отColorSpaceType
этогоTensorBuffer
.
Броски
Илегалстатеексцептион | если TensorImage никогда не загружает данные |
---|
публичный TensorBuffer getTensorBuffer ()
Возвращает представление TensorBuffer
этого TensorImage
с ожидаемым типом данных.
Числовое приведение и ограничение будут применяться, если сохраненные данные отличаются от типа данных TensorImage
.
Важно: это только ссылка. НЕ ИЗМЕНЯТЬ. Мы не создаем здесь копию из соображений производительности, но если необходимы изменения, сделайте копию.
Возвращает
- ссылка на
TensorBuffer
, который содержит данные изображения
Броски
Илегалстатеексцептион | если TensorImage никогда не загружает данные |
---|
публичный интервал getWidth ()
Получает ширину изображения.
Броски
Илегалстатеексцептион | если TensorImage никогда не загружает данные |
---|---|
IllegalArgumentException | если базовые данные повреждены |
public void load (буфер TensorBuffer , ColorSpaceType colorSpaceType)
Загружает TensorBuffer
, содержащий значения пикселей с определенным ColorSpaceType
.
Поддерживает только ColorSpaceType.RGB
и ColorSpaceType.GRAYSCALE
. Используйте load(TensorBuffer, ImageProperties)
для других типов цветового пространства.
Примечание: если тип данных buffer
не соответствует типу данных этого TensorImage
, при вызове getTensorBuffer()
и getBuffer()
будет применяться числовое приведение и фиксация.
Параметры
буфер | TensorBuffer . Его форма должна быть либо (h, w, 3), либо (1, h, w, 3) для изображений RGB, либо (h, w) или (1, h, w) для изображений GRAYSCALE. |
---|---|
colorSpaceType |
Броски
IllegalArgumentException | если форма буфера не соответствует типу цветового пространства или если тип цветового пространства не поддерживается |
---|
общедоступная недействительная загрузка (растровое изображение Bitmap)
Загружает объект изображения Bitmap
в этот TensorImage
.
Примечание: если TensorImage
имеет тип данных, отличный от DataType.UINT8
, при вызове getTensorBuffer()
и getBuffer()
будет применяться числовое приведение и фиксация, где Bitmap
будет преобразован в TensorBuffer
.
Важно: при загрузке растрового изображения НЕ ИЗМЕНЯЙТЕ растровое изображение со стороны вызывающей стороны. Объект TensorImage
будет полагаться на растровое изображение. Вероятно, это также изменит растровое изображение. В этом методе мы выполняем подход с нулевым копированием для этого растрового изображения, просто сохраняя его ссылку. Используйте bitmap.copy(bitmap.getConfig(), true)
для создания копии, если это необходимо.
Примечание. Чтобы добиться максимальной производительности, загружайте изображения одинаковой формы, чтобы избежать перераспределения памяти.
Параметры
битовая карта |
---|
Броски
IllegalArgumentException | если bitmap не находится в ARGB_8888 |
---|
общедоступная пустая загрузка (int[] пикселей, форма int[])
Загружает массив int в виде пикселей RGB в этот TensorImage
, представляя пиксели внутри.
Примечание. При вызове getTensorBuffer()
и getBuffer()
для преобразования значений в тип данных этого TensorImage
будут применяться числовое приведение и фиксация.
Параметры
пикселей | пиксели RGB, представляющие изображение |
---|---|
форма | форма изображения должна быть либо в форме (h, w, 3), либо в форме (1, h, w, 3) |
Броски
IllegalArgumentException | если форма не является ни (h, w, 3), ни (1, h, w, 3) |
---|
общедоступная пустая загрузка (пиксели с плавающей точкой [], форма int [])
Загружает массив с плавающей запятой в виде пикселей RGB в этот TensorImage
, представляющий пиксели внутри.
Примечание: если TensorImage
имеет тип данных, отличный от DataType.FLOAT32
, при вызове getTensorBuffer()
и getBuffer()
будет применяться числовое приведение и фиксация.
Параметры
пикселей | пиксели RGB, представляющие изображение |
---|---|
форма | форма изображения должна быть либо в форме (h, w, 3), либо в форме (1, h, w, 3) |
Броски
IllegalArgumentException | если форма не является ни (h, w, 3), ни (1, h, w, 3) |
---|
общедоступная недействительная загрузка (буфер ByteBuffer , ImageProperties imageProperties)
Загружает ByteBuffer
, содержащий значения пикселей с определенными ImageProperties
.
Примечание: если тип данных buffer
не соответствует типу данных этого TensorImage
, при вызове getTensorBuffer()
и getBuffer()
будет применяться числовое приведение и фиксация.
Параметры
буфер | |
---|---|
свойства изображения |
Броски
IllegalArgumentException | если размер буфера меньше размера изображения, указанного высотой, шириной и типом цветового пространства в ImageProperties |
---|
public void load (буфер TensorBuffer , ImageProperties imageProperties)
Загружает TensorBuffer
, содержащий значения пикселей с определенными ImageProperties
.
Форма TensorBuffer
не будет использоваться для определения высоты и ширины изображения. Установите свойства изображения через ImageProperties
.
Примечание: если тип данных buffer
не соответствует типу данных этого TensorImage
, при вызове getTensorBuffer()
и getBuffer()
будет применяться числовое приведение и фиксация.
Параметры
буфер | |
---|---|
свойства изображения |
Броски
IllegalArgumentException | если размер буфера меньше размера изображения, указанного высотой, шириной и типом цветового пространства в ImageProperties |
---|
общедоступная пустая загрузка (изображение изображения)
Загружает объект Image
в этот TensorImage
.
Основное использование этого метода — загрузка объекта Image
в качестве входных данных модели в https://www.tensorflow.org/lite/inference_with_metadata/task_library/overview . TensorImage
, поддерживаемый Image
, не поддерживается ImageProcessor
.
* @throws IllegalArgumentException, если ImageFormat
image
не YUV_420_888
Параметры
изображение |
---|