From 5854f4737b0e864220b5b2ce51fa85c38a452015 Mon Sep 17 00:00:00 2001 From: jason Date: Wed, 15 May 2019 15:29:55 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E9=A2=9C=E8=89=B2=E5=80=BC?= =?UTF-8?q?=E6=89=AB=E6=8F=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../example/open_nsfw_android/MainActivity.kt | 1 - .../main/java/com/zwy/nsfw/Classifier.java | 41 +++++++++++++++++++ .../java/com/zwy/nsfw/api/NsfwHelper.java | 4 ++ 3 files changed, 45 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/example/open_nsfw_android/MainActivity.kt b/app/src/main/java/com/example/open_nsfw_android/MainActivity.kt index b55c08d9..941e6a76 100644 --- a/app/src/main/java/com/example/open_nsfw_android/MainActivity.kt +++ b/app/src/main/java/com/example/open_nsfw_android/MainActivity.kt @@ -22,7 +22,6 @@ class MainActivity : AppCompatActivity() { iv.setImageBitmap(b) nsfwHelper = NsfwHelper.getInstance(this, true, 1) - bt_.setOnClickListener { //同步识别 val nsfwBean = nsfwHelper?.scanBitmapSyn(b) diff --git a/nsfw/src/main/java/com/zwy/nsfw/Classifier.java b/nsfw/src/main/java/com/zwy/nsfw/Classifier.java index 766af2ca..3a235797 100644 --- a/nsfw/src/main/java/com/zwy/nsfw/Classifier.java +++ b/nsfw/src/main/java/com/zwy/nsfw/Classifier.java @@ -154,6 +154,31 @@ public abstract class Classifier { Log.d(TAG, "Timecost to put values into ByteBuffer: " + (endTime - startTime) + "ms"); } + private void pross(int[] data){ + int pixel = 0; + long startTime = SystemClock.uptimeMillis(); + for (int i = 0; i < getImageSizeX(); ++i) { + for (int j = 0; j < getImageSizeY(); ++j) { + + //操作每一个像素 + //拿出每一个像素点对应的R、G、B的int值 + //对每一个int值减去阈值 R-123 B-104 G-117 + //将R、G、B 利用 B、G、R顺序重新写入数组 + //将数组传入tflite获取回传结果 + final int color = data[pixel++]; + int r1 = Color.red(color) - 123; + int g1 = Color.green(color) - 117; + int b1 = Color.blue(color) - 104; + + imgData.putFloat(b1); + imgData.putFloat(g1); + imgData.putFloat(r1); + } + } + long endTime = SystemClock.uptimeMillis(); + Log.d(TAG, "Timecost to put values into ByteBuffer: " + (endTime - startTime) + "ms"); + } + public NsfwBean run(Bitmap bitmap) { convertBitmapToByteBuffer(bitmap); long startTime = SystemClock.uptimeMillis(); @@ -165,6 +190,22 @@ public abstract class Classifier { } + /** + * 224 * 224 int颜色值 + * @param data + * @return + */ + public NsfwBean run(int[] data){ + pross(data); + long startTime = SystemClock.uptimeMillis(); + float[][] labelProbArray = new float[1][2]; + tflite.run(imgData, labelProbArray); + long endTime = SystemClock.uptimeMillis(); + Log.d(TAG, "Timecost to run model inference: " + (endTime - startTime) + "ms"); + return new NsfwBean(labelProbArray[0][0], labelProbArray[0][1]); + } + + /** * Closes the interpreter and model to release resources. */ diff --git a/nsfw/src/main/java/com/zwy/nsfw/api/NsfwHelper.java b/nsfw/src/main/java/com/zwy/nsfw/api/NsfwHelper.java index e057a7a5..c04fc6f2 100644 --- a/nsfw/src/main/java/com/zwy/nsfw/api/NsfwHelper.java +++ b/nsfw/src/main/java/com/zwy/nsfw/api/NsfwHelper.java @@ -37,6 +37,10 @@ public class NsfwHelper { return classifier.run(bitmap); } + public NsfwBean scanByIntColorsSyn(int[] colors){ + return classifier.run(colors); + } + public void scanBitmap(final Bitmap bitmap, final OnScanBitmapListener onScanBitmapListener) { new Thread(new Runnable() {