本文共 1602 字,大约阅读时间需要 5 分钟。
私 void classifyFrame() { // 获取Bitmap Bitmap bitmap = textureView.getBitmap(classifier.getImageSizeX(), classifier.getImageSizeY()); // 感兴趣的文本 String textToShow = classifier.classifyFrame(bitmap); }
// 输入数据的保存空间 ByteBuffer=imgData=ByteBuffer.allocateDirect( DIM_BATCH_SIZE//1 * getImageSizeX() * getImageSizeY() * DIM_PIXEL_SIZE//3 * getNumBytesPerChannel());
// 将Bitmap转换为ByteBuffer private void convertBitmapToByteBuffer(Bitmap bitmap) { imgData.rewind(); bitmap.getPixels(intValues, 0, bitmap.getWidth(), 0, 0, bitmap.getWidth(), bitmap.getHeight());
long startTime = SystemClock.uptimeMillis();pixel=0;for (int i=0; i
}
protected void addPixelValue(int pixelValue) { imgData.put((byte)((pixelValue >> 16) & 0xFF)); imgData.put((byte)((pixelValue >> 8) & 0xFF)); imgData.put((byte)(pixelValue & 0xFF)); }
// TensorFlow Lite引擎 protected Interpreter tflite; // 输入结果存储空间 private ByteBuffer imgData;
// 模型加载与预处理 tflite= new Interpreter(loadModelFile(activity)); imgData=ByteBuffer.allocateDirect( DIM_BATCH_SIZE//1 * getImageSizeX() * getImageSizeY() * DIM_PIXEL_SIZE//3 * getNumBytesPerChannel());
// 模型运行 public void run(Object input) { Object[] inputs = {input}; Map<Integer, Object> outputs = new HashMap<>(); outputs.put(0, output); runForMultipleInputsOutputs(inputs, outputs); }
public void runForMultipleInputsOutputs(Object[] inputs, Map<Integer, Object> outputs) { Tensor[] tensors = wrapper.run(inputs); for (Integer idx : outputs.keySet()) { tensors[idx].copyTo(outputs.get(idx)); } }
// 定义模型输入维度 private static native int[] getInputDims(long interpreterHandle, int inputIdx, int numBytes);
转载地址:http://icuzk.baihongyu.com/