TensorImage é a classe wrapper para o objeto Image. Ao usar utilitários de processamento de imagem na biblioteca TFLite.support, é comum primeiro converter objetos de imagem em tipos variantes para TensorImage.
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 do 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, 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 comprovadamente seguros para threads.
Construtores Públicos
TensorImage () Inicializa um objeto TensorImage . | |
Métodos Públicos
TensorImage estático | createFrom ( TensorImage src, DataType dataType) Cria uma cópia profunda de um determinado TensorImage com o tipo de dados desejado. |
TensorImage estático | fromBitmap (bitmap de bitmap) |
Mapa de bits | obterBitmap () 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 . |
interno | obterAltura () 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. |
interno | obterLargura () Obtém a largura da imagem. |
vazio | carregar (buffer TensorBuffer , ColorSpaceType colorSpaceType) Carrega um TensorBuffer contendo valores de pixel com o ColorSpaceType específico. |
vazio | carregar (bitmap de bitmap) Carrega um objeto de imagem Bitmap neste TensorImage . |
vazio | carregar (int[] pixels, forma int[]) Carrega uma matriz int como pixels RGB neste TensorImage , representando os pixels internos. |
vazio | carregar (float[] pixels, forma int[]) Carrega uma matriz flutuante como pixels RGB neste TensorImage , representando os pixels internos. |
vazio | carregar (buffer ByteBuffer , ImageProperties imageProperties) Carrega um ByteBuffer contendo valores de pixel com ImageProperties específicos. |
vazio | carregar (buffer TensorBuffer , ImageProperties imageProperties) Carrega um TensorBuffer contendo valores de pixel com ImageProperties específicos. |
vazio | carregar (imagem imagem) Carrega um objeto Image neste TensorImage . |
Métodos herdados
Construtores Públicos
TensorImage público ()
Inicializa um objeto TensorImage
.
Nota: o tipo de dados deste TensorImage
é DataType.UINT8
. Use TensorImage(DataType)
se outros tipos de dados forem preferidos.
TensorImage público ( DataType dataType)
Inicializa um objeto TensorImage
com o tipo de dados especificado.
Ao obter um TensorBuffer
ou ByteBuffer
deste TensorImage
, como usar getTensorBuffer()
e getBuffer()
, os valores dos 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 a vida útil 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
fonte | 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 |
---|
bitmap público getBitmap ()
Retorna uma representação Bitmap
deste TensorImage
.
A conversão e fixação numérica 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 MODIFIQUE. Não criamos uma cópia aqui por questões de desempenho, mas se alguma modificação for necessária, faça uma cópia.
Devoluções
- uma referência a um
Bitmap
na configuraçãoARGB_8888
(o canal "A" é sempre opaco) ou emALPHA_8
, dependendo doColorSpaceType
desteTensorBuffer
.
Lança
IllegalStateException | se o TensorImage nunca carregar dados |
---|
ByteBuffer público getBuffer ()
Retorna uma representação ByteBuffer
deste TensorImage
com o tipo de dados esperado.
A conversão e fixação numérica serão aplicadas se os dados armazenados forem diferentes do tipo de dados do TensorImage
.
Importante: é apenas uma referência. NÃO MODIFIQUE. Não criamos uma cópia aqui por questões de desempenho, mas se alguma modificação for necessária, 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 |
---|
tipo de dados público getDataType ()
Obtém o tipo de dados deste TensorImage
.
Devoluções
- um tipo de dados. Atualmente apenas
DataType.UINT8
eDataType.FLOAT32
são suportados.
público int getHeight ()
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
por meio de load(Image)
.
Importante: é apenas uma referência. NÃO MODIFIQUE. Não criamos uma cópia aqui por questões de desempenho, mas se alguma modificação for necessária, faça uma cópia.
Devoluções
- uma referência a um
Bitmap
na configuraçãoARGB_8888
(o canal "A" é sempre opaco) ou emALPHA_8
, dependendo doColorSpaceType
desteTensorBuffer
.
Lança
IllegalStateException | se o TensorImage nunca carregar dados |
---|
TensorBuffer público getTensorBuffer ()
Retorna uma representação TensorBuffer
deste TensorImage
com o tipo de dados esperado.
A conversão e fixação numérica serão aplicadas se os dados armazenados forem diferentes do tipo de dados do TensorImage
.
Importante: é apenas uma referência. NÃO MODIFIQUE. Não criamos uma cópia aqui por questões de desempenho, mas se alguma modificação for necessária, 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 |
---|
público 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 pública nula (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.
Nota: se o tipo de dados do buffer
não corresponder ao deste TensorImage
, a conversão e fixação numérica 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 o formato 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
.
Nota: 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. Neste método, realizamos 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.
Nota: para obter o melhor desempenho, carregue as imagens no mesmo formato para evitar a realocação de memória.
Parâmetros
bitmap |
---|
Lança
Exceção de argumento ilegal | se bitmap não estiver em ARGB_8888 |
---|
carregamento vazio público (int[] pixels, forma int[])
Carrega uma matriz int como pixels RGB neste TensorImage
, representando os pixels internos.
Nota: a conversão e fixação numérica 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 estar 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) |
---|
carregamento vazio público (float[] pixels, formato int[])
Carrega uma matriz flutuante como pixels RGB neste TensorImage
, representando os pixels internos.
Nota: se o TensorImage
tiver um tipo de dados diferente de DataType.FLOAT32
, a conversão e fixação numérica 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 estar 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 (buffer ByteBuffer , ImageProperties imageProperties)
Carrega um ByteBuffer
contendo valores de pixel com ImageProperties
específicos.
Nota: se o tipo de dados do buffer
não corresponder ao deste TensorImage
, a conversão e fixação numérica 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, largura e tipo de espaço de cores da imagem em ImageProperties |
---|
carga pública nula (buffer TensorBuffer , ImageProperties imageProperties)
Carrega um TensorBuffer
contendo valores de pixel com ImageProperties
específicos.
A forma do TensorBuffer
não será usada para determinar a altura e largura da imagem. Defina as propriedades da imagem por meio de ImageProperties
.
Nota: se o tipo de dados do buffer
não corresponder ao deste TensorImage
, a conversão e fixação numérica 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, largura e tipo de espaço de cores da imagem em ImageProperties |
---|
carregamento vazio público (imagem da imagem)
Carrega um objeto Image
neste TensorImage
.
O principal uso deste método é carregar um objeto Image
como entrada do modelo para https://www.tensorflow.org/lite/inference_with_metadata/task_library/overview . TensorImage
apoiado por Image
não é compatível com ImageProcessor
.
* @throws IllegalArgumentException se o ImageFormat
da image
não for YUV_420_888
Parâmetros
imagem |
---|