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 . | |
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) |
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. |
---|
Lança
Exceção de argumento ilegal | se dataType não for DataType.UINT8 nem DataType.FLOAT32 |
---|
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 desrc
e o tipo de dados édataType
Public static TensorImage fromBitmap (bitmap de bitmap)
Inicializa um objeto TensorImage
de DataType.UINT8
com um Bitmap
.
Parâmetros
bitmap |
---|
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
- uma referência a um
Bitmap
na configuraçãoARGB_8888
(canal "A" é sempre opaco) ou emALPHA_8
, dependendo doColorSpaceType
desteTensorBuffer
.
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
- um tipo de dados. Atualmente, apenas
DataType.UINT8
eDataType.FLOAT32
são suportados.
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
- uma referência a um
Bitmap
na configuraçãoARGB_8888
(canal "A" é sempre opaco) ou emALPHA_8
, dependendo doColorSpaceType
desteTensorBuffer
.
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 |
---|