private static Tensor makeImageTensor()

in tensorflow-examples-legacy/object_detection/src/main/java/DetectObjects.java [148:166]


  private static Tensor<UInt8> makeImageTensor(String filename) throws IOException {
    BufferedImage img = ImageIO.read(new File(filename));
    if (img.getType() != BufferedImage.TYPE_3BYTE_BGR) {
      BufferedImage newImage = new BufferedImage(
          img.getWidth(), img.getHeight(), BufferedImage.TYPE_3BYTE_BGR);
      Graphics2D g = newImage.createGraphics();
      g.drawImage(img, 0, 0, img.getWidth(), img.getHeight(), null);
      g.dispose();
      img = newImage;
    }
      
    byte[] data = ((DataBufferByte) img.getData().getDataBuffer()).getData();
    // ImageIO.read seems to produce BGR-encoded images, but the model expects RGB.
    bgr2rgb(data);
    final long BATCH_SIZE = 1;
    final long CHANNELS = 3;
    long[] shape = new long[] {BATCH_SIZE, img.getHeight(), img.getWidth(), CHANNELS};
    return Tensor.create(UInt8.class, shape, ByteBuffer.wrap(data));
  }