Как преобразовать Tensor обратно в BitMap или любой другой формат изображения в Android? - PullRequest
0 голосов
/ 25 марта 2020

Я искал ответ на этот вопрос, но не смог найти. так что я сделал это и подумал поделиться с каждым. вот мой код

вот тензор вывода:

final Tensor outputTensor = module.forward(IValue.from(inputTensor)).toTensor();
float[] array1 = outputTensor.getDataAsFloatArray() ;

for (int i = 0 ; i< array1.length ; i++){
  arralist.add(array1[i]);
}
Bitmap outBitmap = arrayFlotToBitmap(arralist,420,276);

вот функция

private Bitmap arrayFlotToBitmap(List<Float>  floatArray,int width,int height){

byte alpha = (byte) 255 ;

Bitmap bmp = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888) ;

ByteBuffer byteBuffer = ByteBuffer.allocate(width*height*4*3) ;

float Maximum = Collections.max(floatArray);
float minmum = Collections.min(floatArray);
float delta = Maximum - minmum ;

int i = 0 ;
for (float value : floatArray){
  byte temValue = (byte) ((byte) ((((value-minmum)/delta)*255)));
  byteBuffer.put(4*i, temValue) ;
  byteBuffer.put(4*i+1, temValue) ;
  byteBuffer.put(4*i+2, temValue) ;
  byteBuffer.put(4*i+3, alpha) ;
  i++ ;
}
bmp.copyPixelsFromBuffer(byteBuffer) ;
return bmp ;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...