TensorImage

classe pública TensorImage

TensorImage é a classe wrapper para o objeto Image. Ao usar utilitários de processamento de imagem na biblioteca TFLite.support, é comum converter objetos de imagem em tipos de variantes para TensorImage primeiro.

Atualmente, apenas imagens RGB são suportadas e o canal A é sempre ignorado.

Detalhes do armazenamento de dados: um objeto TensorImage pode ter 2 fontes potenciais de verdade: um Bitmap ou um TensorBuffer . TensorImage mantém o estado e só converte um no outro quando necessário. Um caso de uso típico de TensorImage é primeiro carregar uma imagem Bitmap , depois processá-la usando ImageProcessor e, finalmente, obter o ByteBuffer subjacente do TensorBuffer e alimentá-lo no interpretador TFLite.

IMPORTANTE: para obter o melhor desempenho, o TensorImage evita copiar dados sempre que possível. Portanto, ele não possui seus dados. Os chamadores não devem modificar objetos de dados que são passados ​​para load(Bitmap) ou load(TensorBuffer, ColorSpaceType) .

IMPORTANTE: todos os métodos não são comprovados como thread-safe.

Construtores públicos

TensorImage ()
Inicializa um objeto TensorImage .
TensorImage ( DataType dataType)
Inicializa um objeto TensorImage com o tipo de dados especificado.

Métodos públicos

static TensorImage
createFrom ( TensorImage src, DataType dataType)
Cria uma cópia profunda de um determinado TensorImage com o tipo de dados desejado.
static TensorImage
fromBitmap (Bitmap bitmap)
Inicializa um objeto TensorImage de DataType.UINT8 com um Bitmap .
Bitmap
getBitmap ()
Retorna uma representação Bitmap deste TensorImage .
ByteBuffer
getBuffer ()
Retorna uma representação ByteBuffer deste TensorImage com o tipo de dados esperado.
ColorSpaceType
getColorSpaceType ()
Obtém o tipo de espaço de cores deste TensorImage .
Tipo de dados
getDataType ()
Obtém o tipo de dados deste TensorImage .
int
getAltura ()
Obtém a altura da imagem.
Imagem
getMediaImage ()
Retorna uma representação Image deste TensorImage .
TensorBuffer
getTensorBuffer ()
Retorna uma representação TensorBuffer deste TensorImage com o tipo de dados esperado.
int
getLargura ()
Obtém a largura da imagem.
vazio
load ( buffer TensorBuffer , ColorSpaceType colorSpaceType)
Carrega um TensorBuffer contendo valores de pixel com o ColorSpaceType específico.
vazio
carregar (bitmap bitmap)
Carrega um objeto de imagem Bitmap neste TensorImage .
vazio
load (int[] pixels, forma int[])
Carrega uma matriz int como pixels RGB neste TensorImage , representando os pixels internos.
vazio
load (float[] pixels, forma int[])
Carrega uma matriz flutuante como pixels RGB neste TensorImage , representando os pixels internos.
vazio
load ( ByteBuffer buffer, ImageProperties imageProperties)
Carrega um ByteBuffer contendo valores de pixel com ImageProperties específico.
vazio
load ( buffer TensorBuffer , ImageProperties imageProperties)
Carrega um TensorBuffer contendo valores de pixel com ImageProperties específico.
vazio
carregar (imagem da imagem)
Carrega um objeto Image neste TensorImage .

Métodos Herdados

Construtores públicos

public TensorImage ()

Inicializa um objeto TensorImage .

Observação: o tipo de dados deste TensorImage é DataType.UINT8 . Use TensorImage(DataType) se outros tipos de dados forem preferidos.

public TensorImage ( DataType dataType )

Inicializa um objeto TensorImage com o tipo de dados especificado.

Ao obter um TensorBuffer ou um ByteBuffer deste TensorImage , como usar getTensorBuffer() e getBuffer() , os valores de dados serão convertidos para o tipo de dados especificado.

Nota: a forma de um TensorImage não é fixa. Ele pode ser ajustado ao formato da imagem que está sendo carregada neste TensorImage .

Parâmetros
tipo de dados o tipo de dados esperado do TensorBuffer resultante. O tipo é sempre fixo durante o tempo de vida do TensorImage . Para converter o tipo de dados, use createFrom(TensorImage, DataType) para criar uma cópia e converter o tipo de dados ao mesmo tempo.

Métodos públicos

public static TensorImage createFrom ( TensorImage src, DataType dataType)

Cria uma cópia profunda de um determinado TensorImage com o tipo de dados desejado.

Parâmetros
src o TensorImage para copiar
tipo de dados o tipo de dados esperado do TensorImage recém-criado
Devoluções
  • um TensorImage cujos dados são copiados de src e o tipo de dados é dataType

public Bitmap getBitmap ()

Retorna uma representação Bitmap deste TensorImage .

A fundição e fixação numéricas serão aplicadas se os dados armazenados não forem uint8.

Observe que a maneira confiável de obter pixels de um Bitmap ALPHA_8 é usar copyPixelsToBuffer . Métodos de bitmap como `setPixels()` e `getPixels` não funcionam.

Importante: é apenas uma referência. NÃO MODIFICA. Não criamos uma cópia aqui por questões de desempenho, mas se for necessária modificação, faça uma cópia.

Devoluções
Lança
IllegalStateException se o TensorImage nunca carregar dados

público ByteBuffer getBuffer ()

Retorna uma representação ByteBuffer deste TensorImage com o tipo de dados esperado.

A conversão e fixação numéricas serão aplicadas se os dados armazenados forem diferentes do tipo de dados do TensorImage .

Importante: é apenas uma referência. NÃO MODIFICA. Não criamos uma cópia aqui por questões de desempenho, mas se for necessária modificação, faça uma cópia.

É essencialmente um atalho para getTensorBuffer().getBuffer() .

Devoluções
  • uma referência a um ByteBuffer que contém os dados da imagem
Lança
IllegalStateException se o TensorImage nunca carregar dados

public ColorSpaceType getColorSpaceType ()

Obtém o tipo de espaço de cores deste TensorImage .

Lança
IllegalStateException se o TensorImage nunca carregar dados

public DataType getDataType ()

Obtém o tipo de dados deste TensorImage .

Devoluções

public int getAltura ()

Obtém a altura da imagem.

Lança
IllegalStateException se o TensorImage nunca carregar dados
Exceção de argumento ilegal se os dados subjacentes estiverem corrompidos

imagem pública getMediaImage ()

Retorna uma representação Image deste TensorImage .

Este método só funciona quando o TensorImage é apoiado por um Image , o que significa que você precisa primeiro carregar um Image através de load(Image) .

Importante: é apenas uma referência. NÃO MODIFICA. Não criamos uma cópia aqui por questões de desempenho, mas se for necessária modificação, faça uma cópia.

Devoluções
Lança
IllegalStateException se o TensorImage nunca carregar dados

public TensorBuffer getTensorBuffer ()

Retorna uma representação TensorBuffer deste TensorImage com o tipo de dados esperado.

A conversão e fixação numéricas serão aplicadas se os dados armazenados forem diferentes do tipo de dados do TensorImage .

Importante: é apenas uma referência. NÃO MODIFICA. Não criamos uma cópia aqui por questões de desempenho, mas se for necessária modificação, faça uma cópia.

Devoluções
  • uma referência a um TensorBuffer que contém os dados da imagem
Lança
IllegalStateException se o TensorImage nunca carregar dados

public int getWidth ()

Obtém a largura da imagem.

Lança
IllegalStateException se o TensorImage nunca carregar dados
Exceção de argumento ilegal se os dados subjacentes estiverem corrompidos

carga vazia pública (buffer TensorBuffer , ColorSpaceType colorSpaceType)

Carrega um TensorBuffer contendo valores de pixel com o ColorSpaceType específico.

Suporta apenas ColorSpaceType.RGB e ColorSpaceType.GRAYSCALE . Use load(TensorBuffer, ImageProperties) para outros tipos de espaço de cores.

Observação: se o tipo de dados do buffer não corresponder ao deste TensorImage , a conversão numérica e a fixação serão aplicadas ao chamar getTensorBuffer() e getBuffer() .

Parâmetros
amortecedor o TensorBuffer a ser carregado. Sua forma deve ser (h, w, 3) ou (1, h, w, 3) para imagens RGB e (h, w) ou (1, h, w) para imagens em ESCALA DE CINZA
colorSpaceType
Lança
Exceção de argumento ilegal se a forma do buffer não corresponder ao tipo de espaço de cores ou se o tipo de espaço de cores não for suportado

carga nula pública (bitmap bitmap)

Carrega um objeto de imagem Bitmap neste TensorImage .

Observação: se o TensorImage tiver um tipo de dados diferente de DataType.UINT8 , a conversão numérica e a fixação serão aplicadas ao chamar getTensorBuffer() e getBuffer() , onde o Bitmap será convertido em um TensorBuffer .

Importante: ao carregar um bitmap, NÃO MODIFIQUE mais o bitmap do lado do chamador. O objeto TensorImage dependerá do bitmap. Provavelmente também modificará o bitmap. Nesse método, executamos uma abordagem de cópia zero para esse bitmap, simplesmente mantendo sua referência. Use bitmap.copy(bitmap.getConfig(), true) para criar uma cópia, se necessário.

Observação: para obter o melhor desempenho, carregue as imagens no mesmo formato para evitar realocação de memória.

Parâmetros
bitmap
Lança
Exceção de argumento ilegal se o bitmap não estiver em ARGB_8888

carga nula pública (int[] pixels, forma int[])

Carrega uma matriz int como pixels RGB neste TensorImage , representando os pixels internos.

Observação: a conversão numérica e a fixação serão aplicadas para converter os valores no tipo de dados deste TensorImage ao chamar getTensorBuffer() e getBuffer() .

Parâmetros
píxeis os pixels RGB que representam a imagem
forma a forma da imagem, deve ser na forma (h, w, 3), ou na forma (1, h, w, 3)
Lança
Exceção de argumento ilegal se a forma não for (h, w, 3) nem (1, h, w, 3)

carga nula pública (float[] pixels, forma int[])

Carrega uma matriz flutuante como pixels RGB neste TensorImage , representando os pixels internos.

Observação: se o TensorImage tiver um tipo de dados diferente de DataType.FLOAT32 , a conversão numérica e a fixação serão aplicadas ao chamar getTensorBuffer() e getBuffer() .

Parâmetros
píxeis os pixels RGB que representam a imagem
forma a forma da imagem, deve ser na forma (h, w, 3), ou na forma (1, h, w, 3)
Lança
Exceção de argumento ilegal se a forma não for (h, w, 3) nem (1, h, w, 3)

carga void pública ( ByteBuffer buffer, ImageProperties imageProperties)

Carrega um ByteBuffer contendo valores de pixel com ImageProperties específico.

Observação: se o tipo de dados do buffer não corresponder ao deste TensorImage , a conversão numérica e a fixação serão aplicadas ao chamar getTensorBuffer() e getBuffer() .

Parâmetros
amortecedor
Propriedades da imagem
Lança
Exceção de argumento ilegal se o tamanho do buffer for menor que o tamanho da imagem indicado pela altura da imagem, largura e tipo de espaço de cor em ImageProperties

carga vazia pública (buffer TensorBuffer , ImageProperties imageProperties)

Carrega um TensorBuffer contendo valores de pixel com ImageProperties específico.

A forma do TensorBuffer não será usada para determinar a altura e a largura da imagem. Defina as propriedades da imagem por meio de ImageProperties .

Observação: se o tipo de dados do buffer não corresponder ao deste TensorImage , a conversão numérica e a fixação serão aplicadas ao chamar getTensorBuffer() e getBuffer() .

Parâmetros
amortecedor
Propriedades da imagem
Lança
Exceção de argumento ilegal se o tamanho do buffer for menor que o tamanho da imagem indicado pela altura da imagem, largura e tipo de espaço de cor em ImageProperties

carga vazia pública (imagem da imagem)

Carrega um objeto Image neste TensorImage .

O principal uso desse método é carregar um objeto Image como entrada de modelo para https://www.tensorflow.org/lite/inference_with_metadata/task_library/overview . TensorImage com suporte de Image não é compatível com ImageProcessor .

* @throws IllegalArgumentException se o ImageFormat da image não for YUV_420_888

Parâmetros
imagem