TensorImage

classe pública TensorImage

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

No momento, apenas imagens RGB são compatíveis e o canal A é sempre ignorado.

Detalhes do armazenamento de dados: um objeto TensorImage pode ter duas possíveis fontes de verdade: uma Bitmap ou uma TensorBuffer. TensorImage mantém o estado e só converte um para o outro quando necessário. Um caso de uso típico de TensorImage é primeiro carregar uma imagem Bitmap, processá-la usando ImageProcessor e, por fim, receber o ByteBuffer subjacente do TensorBuffer e alimentá-lo ao intérprete do TFLite.

IMPORTANTE: para ter o melhor desempenho, o TensorImage evita copiar dados sempre que possível. Portanto, os dados não pertencem a ele. Autores de chamadas não podem modificar objetos de dados que são transmitidos para load(Bitmap) ou load(TensorBuffer, ColorSpaceType).

IMPORTANTE: nenhum método é seguro para linhas de execução.

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

estático TensorImage
createFrom(TensorImage src, DataType dataType)
Cria uma cópia detalhada de um determinado TensorImage com o tipo de dados desejado.
estático TensorImage
fromBitmap(Bitmap de bitmap)
Inicializa um objeto TensorImage de DataType.UINT8 com um Bitmap .
Bitmap
getBitmap()
Retorna uma representação Bitmap desse TensorImage.
ByteBuffer
Função getBuffer()
Retorna uma representação ByteBuffer desse TensorImage com o tipo de dados esperado.
ColorSpaceType
getColorSpaceType()
Recebe o tipo de espaço de cores desse TensorImage.
DataType
Função getDataType()
Recebe o tipo de dados desse TensorImage.
int
getHeight()
Recebe a altura da imagem.
Imagem
getMediaImage()
Retorna uma representação Image desse TensorImage.
TensorBuffer
getTensorBuffer()
Retorna uma representação TensorBuffer desse TensorImage com o tipo de dados esperado.
int
getWidth()
Recebe a largura da imagem.
void
load(buffer TensorBuffer, ColorSpaceType colorSpaceType)
Carrega um TensorBuffer contendo valores de pixel com o ColorSpaceType específico.
void
load(bitmap de bitmap)
Carrega um objeto de imagem Bitmap neste TensorImage.
void
load(int[] pixels, int[] forma)
Carrega uma matriz int como pixels RGB neste TensorImage, representando os pixels dentro dela.
void
load(flutuação[] pixels, int[] forma)
Carrega uma matriz flutuante como pixels RGB neste TensorImage, representando os pixels dentro dela.
void
load(buffer ByteBuffer, ImageProperties imageProperties)
Carrega um ByteBuffer contendo valores de pixel com o ImageProperties específico.
void
load(buffer TensorBuffer, ImageProperties imageProperties)
Carrega um TensorBuffer contendo valores de pixel com o ImageProperties específico.
void
load(imagem da imagem)
Carrega um objeto Image nesse TensorImage.

Métodos herdados

Construtores públicos

pública TensorImage ()

Inicializa um objeto TensorImage.

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

público TensorImage (DataType dataType)

Inicializa um objeto TensorImage com o tipo de dados especificado.

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

Observação: a forma de uma TensorImage não é fixa. Ele pode ser ajustado de acordo com a forma da imagem que está sendo carregada no TensorImage.

Parâmetros
dataType o tipo de dados esperado do TensorBuffer resultante. O tipo é sempre fixo durante o ciclo de vida da 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

público estático TensorImage createFrom (TensorImage src, DataType dataType)

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

Parâmetros
src o TensorImage que será copiado
dataType o tipo de dados esperado das TensorImage recém-criadas
Retorna
  • Uma TensorImage com dados copiados de src, e o tipo de dados é dataType.

public Bitmap getBitmap ()

Retorna uma representação Bitmap desse TensorImage.

A transmissão numérica e a restrição serão aplicadas se os dados armazenados não forem uint8.

A maneira confiável de receber 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 MODIFICAR. Não criaremos uma cópia aqui para questão de desempenho. No entanto, se a modificação for necessária, faça uma cópia.

Retorna
Gera
IllegalStateException se TensorImage nunca carregar dados.

public ByteBuffer getBuffer ()

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

O cast e a restrição numéricos serão aplicados se os dados armazenados forem diferentes do tipo de dados de TensorImage.

Importante: é apenas uma referência. NÃO MODIFICAR. Não criaremos uma cópia aqui para questão de desempenho. No entanto, se a modificação for necessária, faça uma cópia.

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

Retorna
  • Uma referência a um ByteBuffer que contém os dados da imagem.
Gera
IllegalStateException se TensorImage nunca carregar dados.

public ColorSpaceType getColorSpaceType ()

Recebe o tipo de espaço de cores desse TensorImage.

Gera
IllegalStateException se TensorImage nunca carregar dados.

público DataType getDataType ()

Recebe o tipo de dados desse TensorImage.

Retorna

public int getHeight ()

Recebe a altura da imagem.

Gera
IllegalStateException se TensorImage nunca carregar dados.
IllegalArgumentException se os dados estiverem corrompidos

public Imagem getMediaImage ()

Retorna uma representação Image desse TensorImage.

Esse método só funciona quando o TensorImage tem o suporte de um Image, o que significa que você precisa primeiro carregar um Image usando load(Image).

Importante: é apenas uma referência. NÃO MODIFICAR. Não criaremos uma cópia aqui para questão de desempenho. No entanto, se a modificação for necessária, faça uma cópia.

Retorna
Gera
IllegalStateException se TensorImage nunca carregar dados.

público TensorBuffer getTensorBuffer ()

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

O cast e a restrição numéricos serão aplicados se os dados armazenados forem diferentes do tipo de dados de TensorImage.

Importante: é apenas uma referência. NÃO MODIFICAR. Não criaremos uma cópia aqui para questão de desempenho. No entanto, se a modificação for necessária, faça uma cópia.

Retorna
  • Uma referência a um TensorBuffer que contém os dados da imagem.
Gera
IllegalStateException se TensorImage nunca carregar dados.

public int getWidth ()

Recebe a largura da imagem.

Gera
IllegalStateException se TensorImage nunca carregar dados.
IllegalArgumentException se os dados estiverem corrompidos

public void load (buffer TensorBuffer, ColorSpaceType colorSpaceType)

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

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

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

Parâmetros
buffer o TensorBuffer que será carregado. O formato precisa ser (h, w, 3) ou (1, h, w, 3) para imagens RGB e (h, w) ou (1, h, w) para imagens GRAYSCALE
colorSpaceType
Gera
IllegalArgumentException 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 compatível.

public void load (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 transmissão numérica e a restrição serão aplicadas ao chamar getTensorBuffer() e getBuffer(), em que Bitmap será convertido em TensorBuffer.

Importante: ao carregar um bitmap, NÃO MODIFICA mais o bitmap do lado do autor da chamada. O objeto TensorImage dependerá do bitmap. Provavelmente, o bitmap também será modificado. Nesse método, realizamos uma abordagem de cópia zero para esse bitmap, simplesmente mantendo a referência dele. Use bitmap.copy(bitmap.getConfig(), true) para criar uma cópia, se necessário.

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

Parâmetros
bitmap
Gera
IllegalArgumentException se bitmap não estiver em ARGB_8888

public void load (int[] pixels, int[] shape)

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

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

Parâmetros
pixels os pixels RGB que representam a imagem
shape o formato da imagem deve estar no formato (h, w, 3) ou (1, h, w, 3)
Gera
IllegalArgumentException se a forma não for (h, w, 3) nem (1, h, w, 3)

public void load (float[] pixels, int[] shape)

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

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

Parâmetros
pixels os pixels RGB que representam a imagem
shape o formato da imagem deve estar no formato (h, w, 3) ou (1, h, w, 3)
Gera
IllegalArgumentException se a forma não for (h, w, 3) nem (1, h, w, 3)

public void load (buffer ByteBuffer, ImageProperties imageProperties)

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

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

Parâmetros
buffer
imageProperties
Gera
IllegalArgumentException se o tamanho do buffer for menor que o tamanho indicado pela altura, largura e tipo de espaço de cor da imagem em ImageProperties

public void load (buffer TensorBuffer, ImageProperties imageProperties)

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

O formato do TensorBuffer não vai ser usado para determinar a altura e a largura da imagem. Defina as propriedades da imagem usando ImageProperties.

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

Parâmetros
buffer
imageProperties
Gera
IllegalArgumentException se o tamanho do buffer for menor que o tamanho indicado pela altura, largura e tipo de espaço de cor da imagem em ImageProperties

public void load (Imagem da imagem)

Carrega um objeto Image nesse 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. O TensorImage com suporte de Image não é compatível com ImageProcessor.

* @gera uma IllegalArgumentException se o ImageFormat de image não for YUV_420_888.

Parâmetros
imagem