aboutsummaryrefslogtreecommitdiffhomepage
path: root/tensorflow/examples/android/src/org/tensorflow/demo/TensorflowClassifier.java
diff options
context:
space:
mode:
Diffstat (limited to 'tensorflow/examples/android/src/org/tensorflow/demo/TensorflowClassifier.java')
-rw-r--r--tensorflow/examples/android/src/org/tensorflow/demo/TensorflowClassifier.java62
1 files changed, 62 insertions, 0 deletions
diff --git a/tensorflow/examples/android/src/org/tensorflow/demo/TensorflowClassifier.java b/tensorflow/examples/android/src/org/tensorflow/demo/TensorflowClassifier.java
new file mode 100644
index 0000000000..84a7596ecb
--- /dev/null
+++ b/tensorflow/examples/android/src/org/tensorflow/demo/TensorflowClassifier.java
@@ -0,0 +1,62 @@
+package org.tensorflow.demo;
+
+import android.content.res.AssetManager;
+import android.graphics.Bitmap;
+import android.util.Log;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.StringTokenizer;
+
+/**
+ * JNI wrapper class for the Tensorflow native code.
+ */
+public class TensorflowClassifier implements Classifier {
+ private static final String TAG = "TensorflowClassifier";
+
+ // jni native methods.
+ public native int initializeTensorflow(
+ AssetManager assetManager,
+ String model,
+ String labels,
+ int numClasses,
+ int inputSize,
+ int imageMean);
+
+ private native String classifyImageBmp(Bitmap bitmap);
+
+ private native String classifyImageRgb(int[] output, int width, int height);
+
+ static {
+ System.loadLibrary("tensorflow_demo");
+ }
+
+ @Override
+ public List<Recognition> recognizeImage(final Bitmap bitmap) {
+ final ArrayList<Recognition> recognitions = new ArrayList<Recognition>();
+ for (final String result : classifyImageBmp(bitmap).split("\n")) {
+ Log.i(TAG, "Parsing [" + result + "]");
+
+ // Clean up the string as needed
+ final StringTokenizer st = new StringTokenizer(result);
+ if (!st.hasMoreTokens()) {
+ continue;
+ }
+
+ final String id = st.nextToken();
+ final String confidenceString = st.nextToken();
+ final float confidence = Float.parseFloat(confidenceString);
+
+ final String title =
+ result.substring(id.length() + confidenceString.length() + 2, result.length());
+
+ if (!title.isEmpty()) {
+ recognitions.add(new Recognition(id, title, confidence, null));
+ }
+ }
+ return recognitions;
+ }
+
+ @Override
+ public void close() {}
+}