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 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 .
TensorImage ( DataType dataType)
Inicializa um objeto TensorImage com o tipo de dados especificado.

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)
Inicializa um objeto TensorImage de DataType.UINT8 com um 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.

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 de src e o tipo de dados é dataType

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
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

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
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