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. |
|
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)
|
| 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. |
|---|
Gera
| IllegalArgumentException | se dataType não for DataType.UINT8 nem DataType.FLOAT32
|
|---|
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
TensorImagecom dados copiados desrc, e o tipo de dados édataType.
público estático TensorImage fromBitmap (Bitmap bitmap)
Inicializa um objeto TensorImage de DataType.UINT8 com um Bitmap .
Parâmetros
| bitmap |
|---|
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
- uma referência a um
Bitmapna configuraçãoARGB_8888(o canal A é sempre opaco) ou emALPHA_8, dependendo doColorSpaceTypedessaTensorBuffer;
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
ByteBufferque 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
- um tipo de dado. Atualmente, apenas
DataType.UINT8eDataType.FLOAT32são compatíveis.
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
- uma referência a um
Bitmapna configuraçãoARGB_8888(o canal A é sempre opaco) ou emALPHA_8, dependendo doColorSpaceTypedessaTensorBuffer;
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
TensorBufferque 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 |
|---|