diff --git a/java/android/app/src/main/AndroidManifest.xml b/java/android/app/src/main/AndroidManifest.xml index bb2df4ce4..95511824f 100644 --- a/java/android/app/src/main/AndroidManifest.xml +++ b/java/android/app/src/main/AndroidManifest.xml @@ -11,18 +11,18 @@ - + diff --git a/java/android/app/src/main/java/com/baidu/paddle/fastdeploy/app/examples/classification/ClassificationMainActivity.java b/java/android/app/src/main/java/com/baidu/paddle/fastdeploy/app/examples/classification/ClassificationMainActivity.java index e052df7a8..07a462d67 100644 --- a/java/android/app/src/main/java/com/baidu/paddle/fastdeploy/app/examples/classification/ClassificationMainActivity.java +++ b/java/android/app/src/main/java/com/baidu/paddle/fastdeploy/app/examples/classification/ClassificationMainActivity.java @@ -20,6 +20,7 @@ import android.preference.PreferenceManager; import android.support.annotation.NonNull; import android.support.v4.app.ActivityCompat; import android.support.v4.content.ContextCompat; +import android.util.Log; import android.view.View; import android.view.ViewGroup; import android.view.Window; @@ -64,8 +65,10 @@ public class ClassificationMainActivity extends Activity implements View.OnClick private TextView seekbarText; private float resultNum = 1.0f; private ResultListView resultView; - private Bitmap shutterBitmap; private Bitmap picBitmap; + private Bitmap shutterBitmap; + private Bitmap originPicBitmap; + private Bitmap originShutterBitmap; private boolean isShutterBitmapCopied = false; public static final int TYPE_UNKNOWN = -1; @@ -103,13 +106,13 @@ public class ClassificationMainActivity extends Activity implements View.OnClick // Clear all setting items to avoid app crashing due to the incorrect settings initSettings(); - // Init the camera preview and UI components - initView(); - // Check and request CAMERA and WRITE_EXTERNAL_STORAGE permissions if (!checkAllPermissions()) { requestAllPermissions(); } + + // Init the camera preview and UI components + initView(); } @SuppressLint("NonConstantResourceId") @@ -216,6 +219,7 @@ public class ClassificationMainActivity extends Activity implements View.OnClick if (!ARGB8888ImageBitmap.isRecycled()) { synchronized (this) { shutterBitmap = ARGB8888ImageBitmap.copy(Bitmap.Config.ARGB_8888, true); + originShutterBitmap = ARGB8888ImageBitmap.copy(Bitmap.Config.ARGB_8888, true); } SystemClock.sleep(TIME_SLEEP_INTERVAL); isShutterBitmapCopied = true; @@ -234,6 +238,7 @@ public class ClassificationMainActivity extends Activity implements View.OnClick Uri uri = data.getData(); String path = getRealPathFromURI(this, uri); picBitmap = decodeBitmap(path, 720, 1280); + originPicBitmap = picBitmap.copy(Bitmap.Config.ARGB_8888, true); resultImage.setImageBitmap(picBitmap); } } @@ -264,12 +269,16 @@ public class ClassificationMainActivity extends Activity implements View.OnClick copyBitmapFromCamera(ARGB8888ImageBitmap); return false; } + boolean modified = false; + long tc = System.currentTimeMillis(); - ClassifyResult result = predictor.predict(ARGB8888ImageBitmap); + ClassifyResult result = predictor.predict(ARGB8888ImageBitmap, + true, ClassificationSettingsActivity.scoreThreshold); timeElapsed += (System.currentTimeMillis() - tc); - Visualize.visClassification(ARGB8888ImageBitmap, result, resultNum, 12); + modified = result.initialized(); + frameCounter++; if (frameCounter >= 30) { final int fps = (int) (1000 / (timeElapsed / 30)); @@ -362,10 +371,11 @@ public class ClassificationMainActivity extends Activity implements View.OnClick if (TYPE == ALBUM_SELECT) { SystemClock.sleep(500); detail(picBitmap); + picBitmap = originPicBitmap.copy(Bitmap.Config.ARGB_8888, true); } else { SystemClock.sleep(500); - svPreview.onPause(); detail(shutterBitmap); + shutterBitmap = originShutterBitmap.copy(Bitmap.Config.ARGB_8888, true); } } }); @@ -374,26 +384,25 @@ public class ClassificationMainActivity extends Activity implements View.OnClick } private void detail(Bitmap bitmap) { - ClassifyResult result = predictor.predict(bitmap, true, ClassificationSettingsActivity.scoreThreshold); - if (scores == null) { - scores = result.mScores; - } - if (labelId == null) { - labelId = result.mLabelIds; - } + + ClassifyResult result = predictor.predict(bitmap, true, resultNum); + + scores = result.mScores; + labelId = result.mLabelIds; + initialized = result.initialized(); if (initialized) { for (int i = 0; i < labelId.length; i++) { - for (int j = 0; j < labelText.size(); j++) { - if (scores[i] > resultNum) { - if (labelId[i] == Integer.parseInt(labelText.get(j).substring(0, labelText.get(j).indexOf(" ")))) { - results.add(new BaseResultModel(labelId[i], labelText.get(j), scores[i])); - } - } + if (scores[i] > resultNum) { + Log.d(TAG, "[fastdeploy] detail: scores[i]: " + scores[i]); + int idx = labelId[i]; + String text = labelText.get(idx); + text = text.substring(text.indexOf(" ")); + results.add(new BaseResultModel(idx, text, scores[i])); } } } - BaseResultAdapter adapter = new BaseResultAdapter(getBaseContext(), R.layout.ocr_result_page_item, results); + BaseResultAdapter adapter = new BaseResultAdapter(getBaseContext(), R.layout.classification_result_page_item, results); resultView.setAdapter(adapter); resultView.invalidate(); diff --git a/java/android/app/src/main/java/com/baidu/paddle/fastdeploy/app/examples/detection/DetectionMainActivity.java b/java/android/app/src/main/java/com/baidu/paddle/fastdeploy/app/examples/detection/DetectionMainActivity.java index 3b8c75011..5a19004ba 100644 --- a/java/android/app/src/main/java/com/baidu/paddle/fastdeploy/app/examples/detection/DetectionMainActivity.java +++ b/java/android/app/src/main/java/com/baidu/paddle/fastdeploy/app/examples/detection/DetectionMainActivity.java @@ -16,6 +16,7 @@ import android.preference.PreferenceManager; import android.support.annotation.NonNull; import android.support.v4.app.ActivityCompat; import android.support.v4.content.ContextCompat; +import android.util.Log; import android.view.View; import android.view.ViewGroup; import android.view.Window; @@ -64,8 +65,10 @@ public class DetectionMainActivity extends Activity implements View.OnClickListe private TextView seekbarText; private float resultNum = 1.0f; private ResultListView resultView; - private Bitmap shutterBitmap; private Bitmap picBitmap; + private Bitmap shutterBitmap; + private Bitmap originPicBitmap; + private Bitmap originShutterBitmap; private boolean isShutterBitmapCopied = false; public static final int TYPE_UNKNOWN = -1; @@ -103,13 +106,13 @@ public class DetectionMainActivity extends Activity implements View.OnClickListe // Clear all setting items to avoid app crashing due to the incorrect settings initSettings(); - // Init the camera preview and UI components - initView(); - // Check and request CAMERA and WRITE_EXTERNAL_STORAGE permissions if (!checkAllPermissions()) { requestAllPermissions(); } + + // Init the camera preview and UI components + initView(); } @SuppressLint("NonConstantResourceId") @@ -215,6 +218,7 @@ public class DetectionMainActivity extends Activity implements View.OnClickListe if (!ARGB8888ImageBitmap.isRecycled()) { synchronized (this) { shutterBitmap = ARGB8888ImageBitmap.copy(Bitmap.Config.ARGB_8888, true); + originShutterBitmap = ARGB8888ImageBitmap.copy(Bitmap.Config.ARGB_8888, true); } SystemClock.sleep(TIME_SLEEP_INTERVAL); isShutterBitmapCopied = true; @@ -233,6 +237,7 @@ public class DetectionMainActivity extends Activity implements View.OnClickListe Uri uri = data.getData(); String path = getRealPathFromURI(this, uri); picBitmap = decodeBitmap(path, 720, 1280); + originPicBitmap = picBitmap.copy(Bitmap.Config.ARGB_8888, true); resultImage.setImageBitmap(picBitmap); } } @@ -263,12 +268,16 @@ public class DetectionMainActivity extends Activity implements View.OnClickListe copyBitmapFromCamera(ARGB8888ImageBitmap); return false; } + boolean modified = false; + long tc = System.currentTimeMillis(); DetectionResult result = predictor.predict(ARGB8888ImageBitmap); timeElapsed += (System.currentTimeMillis() - tc); + Visualize.visDetection(ARGB8888ImageBitmap, result, DetectionSettingsActivity.scoreThreshold); modified = result.initialized(); + frameCounter++; if (frameCounter >= 30) { final int fps = (int) (1000 / (timeElapsed / 30)); @@ -361,10 +370,12 @@ public class DetectionMainActivity extends Activity implements View.OnClickListe if (TYPE == ALBUM_SELECT) { SystemClock.sleep(TIME_SLEEP_INTERVAL * 10); detail(picBitmap); + picBitmap = originPicBitmap.copy(Bitmap.Config.ARGB_8888, true); } else { SystemClock.sleep(TIME_SLEEP_INTERVAL * 10); - svPreview.onPause(); + // svPreview.onPause(); detail(shutterBitmap); + shutterBitmap = originShutterBitmap.copy(Bitmap.Config.ARGB_8888, true); } } }); @@ -373,27 +384,24 @@ public class DetectionMainActivity extends Activity implements View.OnClickListe } private void detail(Bitmap bitmap) { - DetectionResult result = predictor.predict( - bitmap, true, DetectionSettingsActivity.scoreThreshold); - if (scores == null) { - scores = result.mScores; - } - if (labelId == null) { - labelId = result.mLabelIds; - } + + DetectionResult result = predictor.predict(bitmap, true, resultNum); + + scores = result.mScores; + labelId = result.mLabelIds; + initialized = result.initialized(); if (initialized) { for (int i = 0; i < labelId.length; i++) { - for (int j = 0; j < labelText.size(); j++) { - if (scores[i] > resultNum) { - if (labelId[i] == j) { - results.add(new BaseResultModel(labelId[i], labelText.get(j), scores[i])); - } - } + if (scores[i] > resultNum) { + Log.d(TAG, "[fastdeploy] detail: scores[i]: " + scores[i]); + int idx = labelId[i]; + String text = labelText.get(idx); + results.add(new BaseResultModel(idx, text, scores[i])); } } } - BaseResultAdapter adapter = new BaseResultAdapter(getBaseContext(), R.layout.ocr_result_page_item, results); + BaseResultAdapter adapter = new BaseResultAdapter(getBaseContext(), R.layout.detection_result_page_item, results); resultView.setAdapter(adapter); resultView.invalidate(); diff --git a/java/android/app/src/main/java/com/baidu/paddle/fastdeploy/app/examples/facedet/FaceDetMainActivity.java b/java/android/app/src/main/java/com/baidu/paddle/fastdeploy/app/examples/facedet/FaceDetMainActivity.java index 934f568b3..e2883baa3 100644 --- a/java/android/app/src/main/java/com/baidu/paddle/fastdeploy/app/examples/facedet/FaceDetMainActivity.java +++ b/java/android/app/src/main/java/com/baidu/paddle/fastdeploy/app/examples/facedet/FaceDetMainActivity.java @@ -64,8 +64,10 @@ public class FaceDetMainActivity extends Activity implements View.OnClickListene private TextView seekbarText; private float resultNum = 1.0f; private ResultListView resultView; - private Bitmap shutterBitmap; private Bitmap picBitmap; + private Bitmap shutterBitmap; + private Bitmap originPicBitmap; + private Bitmap originShutterBitmap; private boolean isShutterBitmapCopied = false; public static final int TYPE_UNKNOWN = -1; @@ -101,13 +103,13 @@ public class FaceDetMainActivity extends Activity implements View.OnClickListene // Clear all setting items to avoid app crashing due to the incorrect settings initSettings(); - // Init the camera preview and UI components - initView(); - // Check and request CAMERA and WRITE_EXTERNAL_STORAGE permissions if (!checkAllPermissions()) { requestAllPermissions(); } + + // Init the camera preview and UI components + initView(); } @SuppressLint("NonConstantResourceId") @@ -210,6 +212,7 @@ public class FaceDetMainActivity extends Activity implements View.OnClickListene if (!ARGB8888ImageBitmap.isRecycled()) { synchronized (this) { shutterBitmap = ARGB8888ImageBitmap.copy(Bitmap.Config.ARGB_8888, true); + originShutterBitmap = ARGB8888ImageBitmap.copy(Bitmap.Config.ARGB_8888, true); } SystemClock.sleep(TIME_SLEEP_INTERVAL); isShutterBitmapCopied = true; @@ -228,6 +231,7 @@ public class FaceDetMainActivity extends Activity implements View.OnClickListene Uri uri = data.getData(); String path = getRealPathFromURI(this, uri); picBitmap = decodeBitmap(path, 720, 1280); + originPicBitmap = picBitmap.copy(Bitmap.Config.ARGB_8888, true); resultImage.setImageBitmap(picBitmap); } } @@ -259,12 +263,14 @@ public class FaceDetMainActivity extends Activity implements View.OnClickListene copyBitmapFromCamera(ARGB8888ImageBitmap); return false; } + boolean modified = false; + long tc = System.currentTimeMillis(); - SystemClock.sleep(TIME_SLEEP_INTERVAL); FaceDetectionResult result = predictor.predict( ARGB8888ImageBitmap, FaceDetSettingsActivity.scoreThreshold, 0.4f); timeElapsed += (System.currentTimeMillis() - tc); + Visualize.visFaceDetection(ARGB8888ImageBitmap, result); modified = result.initialized(); frameCounter++; @@ -310,8 +316,12 @@ public class FaceDetMainActivity extends Activity implements View.OnClickListene public void initView() { TYPE = REALTIME_DETECT; + CameraSurfaceView.EXPECTED_PREVIEW_WIDTH = 720; + CameraSurfaceView.EXPECTED_PREVIEW_HEIGHT = 360; svPreview = (CameraSurfaceView) findViewById(R.id.sv_preview); svPreview.setOnTextureChangedListener(this); + svPreview.switchCamera(); // Front camera for HumanSeg + tvStatus = (TextView) findViewById(R.id.tv_status); btnSwitch = (ImageButton) findViewById(R.id.btn_switch); btnSwitch.setOnClickListener(this); @@ -359,10 +369,11 @@ public class FaceDetMainActivity extends Activity implements View.OnClickListene if (TYPE == ALBUM_SELECT) { SystemClock.sleep(TIME_SLEEP_INTERVAL * 10); // 500ms detail(picBitmap); + picBitmap = originPicBitmap.copy(Bitmap.Config.ARGB_8888, true); } else { SystemClock.sleep(TIME_SLEEP_INTERVAL * 10); // 500ms - svPreview.onPause(); detail(shutterBitmap); + shutterBitmap = originShutterBitmap.copy(Bitmap.Config.ARGB_8888, true); } } }); @@ -371,12 +382,11 @@ public class FaceDetMainActivity extends Activity implements View.OnClickListene } private void detail(Bitmap bitmap) { - FaceDetectionResult result = predictor.predict(bitmap, true, FaceDetSettingsActivity.scoreThreshold, 0.4f); - if (scores == null) { - scores = result.mScores; - } + FaceDetectionResult result = predictor.predict(bitmap, true, resultNum, 0.4f); + + scores = result.mScores; + initialized = result.initialized(); - Log.e("GBD", initialized + "---initialized"); if (initialized) { for (int i = 0; i < scores.length; i++) { if (scores[i] > resultNum) { @@ -384,7 +394,7 @@ public class FaceDetMainActivity extends Activity implements View.OnClickListene } } } - BaseResultAdapter adapter = new BaseResultAdapter(getBaseContext(), R.layout.ocr_result_page_item, results); + BaseResultAdapter adapter = new BaseResultAdapter(getBaseContext(), R.layout.facedet_result_page_item, results); resultView.setAdapter(adapter); resultView.invalidate(); diff --git a/java/android/app/src/main/java/com/baidu/paddle/fastdeploy/app/examples/ocr/OcrMainActivity.java b/java/android/app/src/main/java/com/baidu/paddle/fastdeploy/app/examples/ocr/OcrMainActivity.java index 321b03ecb..c515abf77 100644 --- a/java/android/app/src/main/java/com/baidu/paddle/fastdeploy/app/examples/ocr/OcrMainActivity.java +++ b/java/android/app/src/main/java/com/baidu/paddle/fastdeploy/app/examples/ocr/OcrMainActivity.java @@ -66,8 +66,10 @@ public class OcrMainActivity extends Activity implements View.OnClickListener, C private TextView seekbarText; private float resultNum = 1.0f; private ResultListView resultView; - private Bitmap shutterBitmap; private Bitmap picBitmap; + private Bitmap shutterBitmap; + private Bitmap originPicBitmap; + private Bitmap originShutterBitmap; private boolean isShutterBitmapCopied = false; public static final int TYPE_UNKNOWN = -1; @@ -104,13 +106,13 @@ public class OcrMainActivity extends Activity implements View.OnClickListener, C // Clear all setting items to avoid app crashing due to the incorrect settings initSettings(); - // Init the camera preview and UI components - initView(); - // Check and request CAMERA and WRITE_EXTERNAL_STORAGE permissions if (!checkAllPermissions()) { requestAllPermissions(); } + + // Init the camera preview and UI components + initView(); } @SuppressLint("NonConstantResourceId") @@ -216,6 +218,7 @@ public class OcrMainActivity extends Activity implements View.OnClickListener, C if (!ARGB8888ImageBitmap.isRecycled()) { synchronized (this) { shutterBitmap = ARGB8888ImageBitmap.copy(Bitmap.Config.ARGB_8888, true); + originShutterBitmap = ARGB8888ImageBitmap.copy(Bitmap.Config.ARGB_8888, true); } SystemClock.sleep(TIME_SLEEP_INTERVAL); isShutterBitmapCopied = true; @@ -235,6 +238,7 @@ public class OcrMainActivity extends Activity implements View.OnClickListener, C Uri uri = data.getData(); String path = getRealPathFromURI(this, uri); picBitmap = decodeBitmap(path, 720, 1280); + originPicBitmap = picBitmap.copy(Bitmap.Config.ARGB_8888, true); resultImage.setImageBitmap(picBitmap); } } @@ -265,12 +269,16 @@ public class OcrMainActivity extends Activity implements View.OnClickListener, C copyBitmapFromCamera(ARGB8888ImageBitmap); return false; } + boolean modified = false; + long tc = System.currentTimeMillis(); - OCRResult result = predictor.predict(ARGB8888ImageBitmap, true); + OCRResult result = predictor.predict(ARGB8888ImageBitmap); timeElapsed += (System.currentTimeMillis() - tc); + Visualize.visOcr(ARGB8888ImageBitmap, result); modified = result.initialized(); + frameCounter++; if (frameCounter >= 30) { final int fps = (int) (1000 / (timeElapsed / 30)); @@ -363,10 +371,11 @@ public class OcrMainActivity extends Activity implements View.OnClickListener, C if (TYPE == ALBUM_SELECT) { SystemClock.sleep(TIME_SLEEP_INTERVAL * 10); detail(picBitmap); + picBitmap = originPicBitmap.copy(Bitmap.Config.ARGB_8888, true); } else { SystemClock.sleep(TIME_SLEEP_INTERVAL * 10); - svPreview.onPause(); detail(shutterBitmap); + shutterBitmap = originShutterBitmap.copy(Bitmap.Config.ARGB_8888, true); } } }); @@ -376,12 +385,10 @@ public class OcrMainActivity extends Activity implements View.OnClickListener, C private void detail(Bitmap bitmap) { OCRResult result = predictor.predict(bitmap, true); - if (texts == null) { - texts = result.mText; - } - if (recScores == null) { - recScores = result.mRecScores; - } + + texts = result.mText; + recScores = result.mRecScores; + initialized = result.initialized(); if (initialized) { for (int i = 0; i < texts.length; i++) { diff --git a/java/android/app/src/main/java/com/baidu/paddle/fastdeploy/app/examples/segmentation/SegmentationMainActivity.java b/java/android/app/src/main/java/com/baidu/paddle/fastdeploy/app/examples/segmentation/SegmentationMainActivity.java index 57624477a..07b9bc7a8 100644 --- a/java/android/app/src/main/java/com/baidu/paddle/fastdeploy/app/examples/segmentation/SegmentationMainActivity.java +++ b/java/android/app/src/main/java/com/baidu/paddle/fastdeploy/app/examples/segmentation/SegmentationMainActivity.java @@ -97,13 +97,13 @@ public class SegmentationMainActivity extends Activity implements View.OnClickLi // Clear all setting items to avoid app crashing due to the incorrect settings initSettings(); - // Init the camera preview and UI components - initView(); - // Check and request CAMERA and WRITE_EXTERNAL_STORAGE permissions if (!checkAllPermissions()) { requestAllPermissions(); } + + // Init the camera preview and UI components + initView(); } @SuppressLint("NonConstantResourceId") @@ -253,12 +253,16 @@ public class SegmentationMainActivity extends Activity implements View.OnClickLi copyBitmapFromCamera(ARGB8888ImageBitmap); return false; } + boolean modified = false; + long tc = System.currentTimeMillis(); SegmentationResult result = predictor.predict(ARGB8888ImageBitmap); timeElapsed += (System.currentTimeMillis() - tc); + Visualize.visSegmentation(ARGB8888ImageBitmap, result); modified = result.initialized(); + frameCounter++; if (frameCounter >= 30) { final int fps = (int) (1000 / (timeElapsed / 30)); @@ -302,8 +306,12 @@ public class SegmentationMainActivity extends Activity implements View.OnClickLi public void initView() { TYPE = REALTIME_DETECT; + CameraSurfaceView.EXPECTED_PREVIEW_WIDTH = 720; + CameraSurfaceView.EXPECTED_PREVIEW_HEIGHT = 360; svPreview = (CameraSurfaceView) findViewById(R.id.sv_preview); svPreview.setOnTextureChangedListener(this); + svPreview.switchCamera(); // Front camera for HumanSeg + tvStatus = (TextView) findViewById(R.id.tv_status); btnSwitch = (ImageButton) findViewById(R.id.btn_switch); btnSwitch.setOnClickListener(this);