TensorImage — это класс-оболочка для объекта Image. При использовании утилит обработки изображений в библиотеке TFLite.support обычно сначала преобразуются объекты изображений в вариантах типов в TensorImage.
В настоящее время поддерживаются только изображения RGB, а канал A всегда игнорируется.
Подробности хранения данных: объект TensorImage
может иметь два потенциальных источника истины: Bitmap
или TensorBuffer
. TensorImage
сохраняет состояние и преобразует одно в другое только при необходимости. Типичный вариант использования TensorImage
— сначала загрузить Bitmap
изображение, затем обработать его с помощью ImageProcessor
и, наконец, получить базовый ByteBuffer
TensorBuffer
и передать его в интерпретатор TFLite.
ВАЖНО: для достижения максимальной производительности TensorImage
избегает копирования данных, когда это возможно. Следовательно, он не владеет своими данными. Вызывающие объекты не должны изменять объекты данных, которые передаются в load(Bitmap)
или load(TensorBuffer, ColorSpaceType)
.
ВАЖНО: не все методы являются потокобезопасными.
Смотрите также
Публичные конструкторы
ТензорИмидж () Инициализирует объект TensorImage . | |
Публичные методы
статический тензорный образ | createFrom ( TensorImage src, DataType dataType) Создает глубокую копию данного TensorImage с нужным типом данных. |
статический тензорный образ | fromBitmap (растровое изображение) |
Битовая карта | получить битмап () Возвращает Bitmap представление этого TensorImage . |
Байтбуфер | получитьбуфер () Возвращает представление ByteBuffer этого TensorImage с ожидаемым типом данных. |
ЦветПространствоТип | getColorSpaceType () Получает тип цветового пространства этого TensorImage . |
Тип данных | получитьТипДанных () Получает тип данных этого TensorImage . |
интервал | получитьВысоту () Получает высоту изображения. |
Изображение | getMediaImage () Возвращает представление Image этого TensorImage . |
ТензорБуфер | getTensorBuffer () Возвращает представление TensorBuffer этого TensorImage с ожидаемым типом данных. |
интервал | получить ширину () Получает ширину изображения. |
пустота | загрузить (буфер TensorBuffer , ColorSpaceType colorSpaceType) Загружает TensorBuffer , содержащий значения пикселей с определенным ColorSpaceType . |
пустота | загрузить (растровое изображение) Загружает объект Bitmap изображения в этот TensorImage . |
пустота | загрузить (int[] пикселей, int[] форму) Загружает массив int в виде пикселей RGB в этот TensorImage , представляющий пиксели внутри. |
пустота | загрузить (пиксели float[], форма int[]) Загружает массив с плавающей запятой в виде пикселей RGB в этот TensorImage , представляющий пиксели внутри. |
пустота | загрузить (буфер ByteBuffer , ImageProperties imageProperties) Загружает ByteBuffer , содержащий значения пикселей с определенными ImageProperties . |
пустота | загрузить (буфер TensorBuffer , ImageProperties imageProperties) Загружает TensorBuffer , содержащий значения пикселей с определенными ImageProperties . |
пустота | загрузить (изображение изображения) Загружает объект Image в этот TensorImage . |
Унаследованные методы
Публичные конструкторы
общедоступный TensorImage ()
Инициализирует объект TensorImage
.
Примечание. Тип данных этого TensorImage
— DataType.UINT8
. Используйте TensorImage(DataType)
если предпочтительны другие типы данных.
общедоступный TensorImage ( DataType dataType)
Инициализирует объект TensorImage
указанным типом данных.
При получении TensorBuffer
или ByteBuffer
из этого TensorImage
, например, с помощью getTensorBuffer()
и getBuffer()
, значения данных будут преобразованы в указанный тип данных.
Примечание. Форма TensorImage
не фиксирована. Его можно настроить в соответствии с формой изображения, загружаемого в этот TensorImage
.
Параметры
тип данных | ожидаемый тип данных результирующего TensorBuffer . Тип всегда фиксируется на протяжении всего срока службы TensorImage . Чтобы преобразовать тип данных, используйте createFrom(TensorImage, DataType) для одновременного создания копии и преобразования типа данных. |
---|
Броски
IllegalArgumentException | если dataType не является ни DataType.UINT8 , ни DataType.FLOAT32 |
---|
Публичные методы
public static TensorImage createFrom ( TensorImage src, DataType dataType)
Создает глубокую копию данного TensorImage
с нужным типом данных.
Параметры
источник | TensorImage для копирования |
---|---|
тип данных | ожидаемый тип данных вновь созданного TensorImage |
Возврат
-
TensorImage
, данные которого копируются изsrc
, а тип данных —dataType
общедоступный статический TensorImage fromBitmap (растровое изображение)
Инициализирует объект TensorImage
DataType.UINT8
с помощью Bitmap
.
Параметры
битовая карта |
---|
общедоступное растровое изображение getBitmap ()
Возвращает Bitmap
представление этого TensorImage
.
Числовое приведение и ограничение будут применены, если сохраненные данные не uint8.
Обратите внимание: надежный способ получить пиксели из растрового изображения ALPHA_8
— использовать copyPixelsToBuffer
. Растровые методы, такие как setPixels() и getPixels, не работают.
Важно: это всего лишь ссылка. НЕ ИЗМЕНЯЙТЕ. Мы не создаем здесь копию из соображений производительности, но если необходимо внести изменения, сделайте копию.
Возврат
- ссылка на
Bitmap
в конфигурацииARGB_8888
(канал A всегда непрозрачен) или вALPHA_8
, в зависимости отColorSpaceType
этогоTensorBuffer
.
Броски
IllegalStateException | если TensorImage никогда не загружает данные |
---|
общедоступный ByteBuffer getBuffer ()
Возвращает представление ByteBuffer
этого TensorImage
с ожидаемым типом данных.
Числовое приведение и ограничение будут применены, если сохраненные данные отличаются от типа данных TensorImage
.
Важно: это всего лишь ссылка. НЕ ИЗМЕНЯЙТЕ. Мы не создаем здесь копию из соображений производительности, но если необходимо внести изменения, сделайте копию.
По сути, это сокращенный вариант getTensorBuffer().getBuffer()
.
Возврат
- ссылка на
ByteBuffer
, который содержит данные изображения
Броски
IllegalStateException | если TensorImage никогда не загружает данные |
---|
общедоступный ColorSpaceType getColorSpaceType ()
Получает тип цветового пространства этого TensorImage
.
Броски
IllegalStateException | если TensorImage никогда не загружает данные |
---|
общедоступный тип данных getDataType ()
Получает тип данных этого TensorImage
.
Возврат
- тип данных. В настоящее время поддерживаются только
DataType.UINT8
иDataType.FLOAT32
.
public int getHeight ()
Получает высоту изображения.
Броски
IllegalStateException | если TensorImage никогда не загружает данные |
---|---|
IllegalArgumentException | если базовые данные повреждены |
общедоступное изображение getMediaImage ()
Возвращает представление Image
этого TensorImage
.
Этот метод работает только тогда, когда TensorImage
поддерживается Image
, а это означает, что вам нужно сначала загрузить Image
через load(Image)
.
Важно: это всего лишь ссылка. НЕ ИЗМЕНЯЙТЕ. Мы не создаем здесь копию из соображений производительности, но если необходимо внести изменения, сделайте копию.
Возврат
- ссылка на
Bitmap
в конфигурацииARGB_8888
(канал A всегда непрозрачен) или вALPHA_8
, в зависимости отColorSpaceType
этогоTensorBuffer
.
Броски
IllegalStateException | если TensorImage никогда не загружает данные |
---|
общедоступный TensorBuffer getTensorBuffer ()
Возвращает представление TensorBuffer
этого TensorImage
с ожидаемым типом данных.
Числовое приведение и ограничение будут применены, если сохраненные данные отличаются от типа данных TensorImage
.
Важно: это всего лишь ссылка. НЕ ИЗМЕНЯЙТЕ. Мы не создаем здесь копию из соображений производительности, но если необходимо внести изменения, сделайте копию.
Возврат
- ссылка на
TensorBuffer
, который содержит данные изображения
Броски
IllegalStateException | если TensorImage никогда не загружает данные |
---|
public int getWidth ()
Получает ширину изображения.
Броски
IllegalStateException | если TensorImage никогда не загружает данные |
---|---|
IllegalArgumentException | если базовые данные повреждены |
общедоступная недействительная загрузка (буфер 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) для изображений СЕРОГО. |
---|---|
цветПространствоТип |
Броски
IllegalArgumentException | если форма буфера не соответствует типу цветового пространства или тип цветового пространства не поддерживается |
---|
общедоступная недействительная загрузка (растровое изображение)
Загружает объект Bitmap
изображения в этот TensorImage
.
Примечание. Если TensorImage
имеет тип данных, отличный от DataType.UINT8
, числовое приведение и ограничение будут применяться при вызове getTensorBuffer()
и getBuffer()
, где Bitmap
будет преобразован в TensorBuffer
.
Важно: при загрузке растрового изображения НЕ ИЗМЕНЯЙТЕ его больше со стороны вызывающей стороны. Объект TensorImage
будет полагаться на растровое изображение. Вероятно, это также изменит растровое изображение. В этом методе мы применяем подход с нулевым копированием этого растрового изображения, просто сохраняя его ссылку. Используйте bitmap.copy(bitmap.getConfig(), true)
чтобы при необходимости создать копию.
Примечание. Для достижения максимальной производительности загружайте изображения одинаковой формы, чтобы избежать перераспределения памяти.
Параметры
битовая карта |
---|
Броски
IllegalArgumentException | если bitmap отсутствует в ARGB_8888 |
---|
общедоступная недействительная загрузка (пиксели int[], форма int[])
Загружает массив int в виде пикселей RGB в этот TensorImage
, представляющий пиксели внутри.
Примечание: числовое приведение и ограничение будут применяться для преобразования значений в тип данных этого TensorImage
при вызове getTensorBuffer()
и getBuffer()
.
Параметры
пиксели | пиксели RGB, представляющие изображение |
---|---|
форма | форма изображения, должна быть либо в форме (h,w,3), либо в форме (1,h,w,3) |
Броски
IllegalArgumentException | если форма не является ни (h, w, 3), ни (1, h, w, 3) |
---|
общедоступная недействительная загрузка (пиксели float[], форма 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 |
---|
общедоступная недействительная загрузка (буфер 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
Параметры
изображение |
---|