[Bug Fix] fix android app detail page errors (#624)

This commit is contained in:
DefTruth
2022-11-17 21:37:58 +08:00
committed by GitHub
parent cfda36f4fd
commit 595375e70c
6 changed files with 113 additions and 71 deletions

View File

@@ -11,18 +11,18 @@
<application <application
android:allowBackup="true" android:allowBackup="true"
android:icon="@mipmap/ic_launcher" android:icon="@mipmap/ic_launcher"
android:label="@string/segmentation_app_name" android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round" android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true" android:supportsRtl="true"
android:theme="@style/AppTheme"> android:theme="@style/AppTheme">
<activity android:name=".segmentation.SegmentationMainActivity"> <activity android:name=".detection.DetectionMainActivity">
<intent-filter> <intent-filter>
<action android:name="android.intent.action.MAIN"/> <action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/> <category android:name="android.intent.category.LAUNCHER"/>
</intent-filter> </intent-filter>
</activity> </activity>
<activity <activity
android:name=".segmentation.SegmentationSettingsActivity" android:name=".detection.DetectionSettingsActivity"
android:label="Settings"> android:label="Settings">
</activity> </activity>
</application> </application>

View File

@@ -20,6 +20,7 @@ import android.preference.PreferenceManager;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import android.support.v4.app.ActivityCompat; import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat; import android.support.v4.content.ContextCompat;
import android.util.Log;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.view.Window; import android.view.Window;
@@ -64,8 +65,10 @@ public class ClassificationMainActivity extends Activity implements View.OnClick
private TextView seekbarText; private TextView seekbarText;
private float resultNum = 1.0f; private float resultNum = 1.0f;
private ResultListView resultView; private ResultListView resultView;
private Bitmap shutterBitmap;
private Bitmap picBitmap; private Bitmap picBitmap;
private Bitmap shutterBitmap;
private Bitmap originPicBitmap;
private Bitmap originShutterBitmap;
private boolean isShutterBitmapCopied = false; private boolean isShutterBitmapCopied = false;
public static final int TYPE_UNKNOWN = -1; 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 // Clear all setting items to avoid app crashing due to the incorrect settings
initSettings(); initSettings();
// Init the camera preview and UI components
initView();
// Check and request CAMERA and WRITE_EXTERNAL_STORAGE permissions // Check and request CAMERA and WRITE_EXTERNAL_STORAGE permissions
if (!checkAllPermissions()) { if (!checkAllPermissions()) {
requestAllPermissions(); requestAllPermissions();
} }
// Init the camera preview and UI components
initView();
} }
@SuppressLint("NonConstantResourceId") @SuppressLint("NonConstantResourceId")
@@ -216,6 +219,7 @@ public class ClassificationMainActivity extends Activity implements View.OnClick
if (!ARGB8888ImageBitmap.isRecycled()) { if (!ARGB8888ImageBitmap.isRecycled()) {
synchronized (this) { synchronized (this) {
shutterBitmap = ARGB8888ImageBitmap.copy(Bitmap.Config.ARGB_8888, true); shutterBitmap = ARGB8888ImageBitmap.copy(Bitmap.Config.ARGB_8888, true);
originShutterBitmap = ARGB8888ImageBitmap.copy(Bitmap.Config.ARGB_8888, true);
} }
SystemClock.sleep(TIME_SLEEP_INTERVAL); SystemClock.sleep(TIME_SLEEP_INTERVAL);
isShutterBitmapCopied = true; isShutterBitmapCopied = true;
@@ -234,6 +238,7 @@ public class ClassificationMainActivity extends Activity implements View.OnClick
Uri uri = data.getData(); Uri uri = data.getData();
String path = getRealPathFromURI(this, uri); String path = getRealPathFromURI(this, uri);
picBitmap = decodeBitmap(path, 720, 1280); picBitmap = decodeBitmap(path, 720, 1280);
originPicBitmap = picBitmap.copy(Bitmap.Config.ARGB_8888, true);
resultImage.setImageBitmap(picBitmap); resultImage.setImageBitmap(picBitmap);
} }
} }
@@ -264,12 +269,16 @@ public class ClassificationMainActivity extends Activity implements View.OnClick
copyBitmapFromCamera(ARGB8888ImageBitmap); copyBitmapFromCamera(ARGB8888ImageBitmap);
return false; return false;
} }
boolean modified = false; boolean modified = false;
long tc = System.currentTimeMillis(); long tc = System.currentTimeMillis();
ClassifyResult result = predictor.predict(ARGB8888ImageBitmap); ClassifyResult result = predictor.predict(ARGB8888ImageBitmap,
true, ClassificationSettingsActivity.scoreThreshold);
timeElapsed += (System.currentTimeMillis() - tc); timeElapsed += (System.currentTimeMillis() - tc);
Visualize.visClassification(ARGB8888ImageBitmap, result, resultNum, 12);
modified = result.initialized(); modified = result.initialized();
frameCounter++; frameCounter++;
if (frameCounter >= 30) { if (frameCounter >= 30) {
final int fps = (int) (1000 / (timeElapsed / 30)); final int fps = (int) (1000 / (timeElapsed / 30));
@@ -362,10 +371,11 @@ public class ClassificationMainActivity extends Activity implements View.OnClick
if (TYPE == ALBUM_SELECT) { if (TYPE == ALBUM_SELECT) {
SystemClock.sleep(500); SystemClock.sleep(500);
detail(picBitmap); detail(picBitmap);
picBitmap = originPicBitmap.copy(Bitmap.Config.ARGB_8888, true);
} else { } else {
SystemClock.sleep(500); SystemClock.sleep(500);
svPreview.onPause();
detail(shutterBitmap); 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) { private void detail(Bitmap bitmap) {
ClassifyResult result = predictor.predict(bitmap, true, ClassificationSettingsActivity.scoreThreshold);
if (scores == null) { ClassifyResult result = predictor.predict(bitmap, true, resultNum);
scores = result.mScores;
} scores = result.mScores;
if (labelId == null) { labelId = result.mLabelIds;
labelId = result.mLabelIds;
}
initialized = result.initialized(); initialized = result.initialized();
if (initialized) { if (initialized) {
for (int i = 0; i < labelId.length; i++) { for (int i = 0; i < labelId.length; i++) {
for (int j = 0; j < labelText.size(); j++) { if (scores[i] > resultNum) {
if (scores[i] > resultNum) { Log.d(TAG, "[fastdeploy] detail: scores[i]: " + scores[i]);
if (labelId[i] == Integer.parseInt(labelText.get(j).substring(0, labelText.get(j).indexOf(" ")))) { int idx = labelId[i];
results.add(new BaseResultModel(labelId[i], labelText.get(j), scores[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.setAdapter(adapter);
resultView.invalidate(); resultView.invalidate();

View File

@@ -16,6 +16,7 @@ import android.preference.PreferenceManager;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import android.support.v4.app.ActivityCompat; import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat; import android.support.v4.content.ContextCompat;
import android.util.Log;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.view.Window; import android.view.Window;
@@ -64,8 +65,10 @@ public class DetectionMainActivity extends Activity implements View.OnClickListe
private TextView seekbarText; private TextView seekbarText;
private float resultNum = 1.0f; private float resultNum = 1.0f;
private ResultListView resultView; private ResultListView resultView;
private Bitmap shutterBitmap;
private Bitmap picBitmap; private Bitmap picBitmap;
private Bitmap shutterBitmap;
private Bitmap originPicBitmap;
private Bitmap originShutterBitmap;
private boolean isShutterBitmapCopied = false; private boolean isShutterBitmapCopied = false;
public static final int TYPE_UNKNOWN = -1; 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 // Clear all setting items to avoid app crashing due to the incorrect settings
initSettings(); initSettings();
// Init the camera preview and UI components
initView();
// Check and request CAMERA and WRITE_EXTERNAL_STORAGE permissions // Check and request CAMERA and WRITE_EXTERNAL_STORAGE permissions
if (!checkAllPermissions()) { if (!checkAllPermissions()) {
requestAllPermissions(); requestAllPermissions();
} }
// Init the camera preview and UI components
initView();
} }
@SuppressLint("NonConstantResourceId") @SuppressLint("NonConstantResourceId")
@@ -215,6 +218,7 @@ public class DetectionMainActivity extends Activity implements View.OnClickListe
if (!ARGB8888ImageBitmap.isRecycled()) { if (!ARGB8888ImageBitmap.isRecycled()) {
synchronized (this) { synchronized (this) {
shutterBitmap = ARGB8888ImageBitmap.copy(Bitmap.Config.ARGB_8888, true); shutterBitmap = ARGB8888ImageBitmap.copy(Bitmap.Config.ARGB_8888, true);
originShutterBitmap = ARGB8888ImageBitmap.copy(Bitmap.Config.ARGB_8888, true);
} }
SystemClock.sleep(TIME_SLEEP_INTERVAL); SystemClock.sleep(TIME_SLEEP_INTERVAL);
isShutterBitmapCopied = true; isShutterBitmapCopied = true;
@@ -233,6 +237,7 @@ public class DetectionMainActivity extends Activity implements View.OnClickListe
Uri uri = data.getData(); Uri uri = data.getData();
String path = getRealPathFromURI(this, uri); String path = getRealPathFromURI(this, uri);
picBitmap = decodeBitmap(path, 720, 1280); picBitmap = decodeBitmap(path, 720, 1280);
originPicBitmap = picBitmap.copy(Bitmap.Config.ARGB_8888, true);
resultImage.setImageBitmap(picBitmap); resultImage.setImageBitmap(picBitmap);
} }
} }
@@ -263,12 +268,16 @@ public class DetectionMainActivity extends Activity implements View.OnClickListe
copyBitmapFromCamera(ARGB8888ImageBitmap); copyBitmapFromCamera(ARGB8888ImageBitmap);
return false; return false;
} }
boolean modified = false; boolean modified = false;
long tc = System.currentTimeMillis(); long tc = System.currentTimeMillis();
DetectionResult result = predictor.predict(ARGB8888ImageBitmap); DetectionResult result = predictor.predict(ARGB8888ImageBitmap);
timeElapsed += (System.currentTimeMillis() - tc); timeElapsed += (System.currentTimeMillis() - tc);
Visualize.visDetection(ARGB8888ImageBitmap, result, DetectionSettingsActivity.scoreThreshold); Visualize.visDetection(ARGB8888ImageBitmap, result, DetectionSettingsActivity.scoreThreshold);
modified = result.initialized(); modified = result.initialized();
frameCounter++; frameCounter++;
if (frameCounter >= 30) { if (frameCounter >= 30) {
final int fps = (int) (1000 / (timeElapsed / 30)); final int fps = (int) (1000 / (timeElapsed / 30));
@@ -361,10 +370,12 @@ public class DetectionMainActivity extends Activity implements View.OnClickListe
if (TYPE == ALBUM_SELECT) { if (TYPE == ALBUM_SELECT) {
SystemClock.sleep(TIME_SLEEP_INTERVAL * 10); SystemClock.sleep(TIME_SLEEP_INTERVAL * 10);
detail(picBitmap); detail(picBitmap);
picBitmap = originPicBitmap.copy(Bitmap.Config.ARGB_8888, true);
} else { } else {
SystemClock.sleep(TIME_SLEEP_INTERVAL * 10); SystemClock.sleep(TIME_SLEEP_INTERVAL * 10);
svPreview.onPause(); // svPreview.onPause();
detail(shutterBitmap); 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) { private void detail(Bitmap bitmap) {
DetectionResult result = predictor.predict(
bitmap, true, DetectionSettingsActivity.scoreThreshold); DetectionResult result = predictor.predict(bitmap, true, resultNum);
if (scores == null) {
scores = result.mScores; scores = result.mScores;
} labelId = result.mLabelIds;
if (labelId == null) {
labelId = result.mLabelIds;
}
initialized = result.initialized(); initialized = result.initialized();
if (initialized) { if (initialized) {
for (int i = 0; i < labelId.length; i++) { for (int i = 0; i < labelId.length; i++) {
for (int j = 0; j < labelText.size(); j++) { if (scores[i] > resultNum) {
if (scores[i] > resultNum) { Log.d(TAG, "[fastdeploy] detail: scores[i]: " + scores[i]);
if (labelId[i] == j) { int idx = labelId[i];
results.add(new BaseResultModel(labelId[i], labelText.get(j), scores[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.setAdapter(adapter);
resultView.invalidate(); resultView.invalidate();

View File

@@ -64,8 +64,10 @@ public class FaceDetMainActivity extends Activity implements View.OnClickListene
private TextView seekbarText; private TextView seekbarText;
private float resultNum = 1.0f; private float resultNum = 1.0f;
private ResultListView resultView; private ResultListView resultView;
private Bitmap shutterBitmap;
private Bitmap picBitmap; private Bitmap picBitmap;
private Bitmap shutterBitmap;
private Bitmap originPicBitmap;
private Bitmap originShutterBitmap;
private boolean isShutterBitmapCopied = false; private boolean isShutterBitmapCopied = false;
public static final int TYPE_UNKNOWN = -1; 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 // Clear all setting items to avoid app crashing due to the incorrect settings
initSettings(); initSettings();
// Init the camera preview and UI components
initView();
// Check and request CAMERA and WRITE_EXTERNAL_STORAGE permissions // Check and request CAMERA and WRITE_EXTERNAL_STORAGE permissions
if (!checkAllPermissions()) { if (!checkAllPermissions()) {
requestAllPermissions(); requestAllPermissions();
} }
// Init the camera preview and UI components
initView();
} }
@SuppressLint("NonConstantResourceId") @SuppressLint("NonConstantResourceId")
@@ -210,6 +212,7 @@ public class FaceDetMainActivity extends Activity implements View.OnClickListene
if (!ARGB8888ImageBitmap.isRecycled()) { if (!ARGB8888ImageBitmap.isRecycled()) {
synchronized (this) { synchronized (this) {
shutterBitmap = ARGB8888ImageBitmap.copy(Bitmap.Config.ARGB_8888, true); shutterBitmap = ARGB8888ImageBitmap.copy(Bitmap.Config.ARGB_8888, true);
originShutterBitmap = ARGB8888ImageBitmap.copy(Bitmap.Config.ARGB_8888, true);
} }
SystemClock.sleep(TIME_SLEEP_INTERVAL); SystemClock.sleep(TIME_SLEEP_INTERVAL);
isShutterBitmapCopied = true; isShutterBitmapCopied = true;
@@ -228,6 +231,7 @@ public class FaceDetMainActivity extends Activity implements View.OnClickListene
Uri uri = data.getData(); Uri uri = data.getData();
String path = getRealPathFromURI(this, uri); String path = getRealPathFromURI(this, uri);
picBitmap = decodeBitmap(path, 720, 1280); picBitmap = decodeBitmap(path, 720, 1280);
originPicBitmap = picBitmap.copy(Bitmap.Config.ARGB_8888, true);
resultImage.setImageBitmap(picBitmap); resultImage.setImageBitmap(picBitmap);
} }
} }
@@ -259,12 +263,14 @@ public class FaceDetMainActivity extends Activity implements View.OnClickListene
copyBitmapFromCamera(ARGB8888ImageBitmap); copyBitmapFromCamera(ARGB8888ImageBitmap);
return false; return false;
} }
boolean modified = false; boolean modified = false;
long tc = System.currentTimeMillis(); long tc = System.currentTimeMillis();
SystemClock.sleep(TIME_SLEEP_INTERVAL);
FaceDetectionResult result = predictor.predict( FaceDetectionResult result = predictor.predict(
ARGB8888ImageBitmap, FaceDetSettingsActivity.scoreThreshold, 0.4f); ARGB8888ImageBitmap, FaceDetSettingsActivity.scoreThreshold, 0.4f);
timeElapsed += (System.currentTimeMillis() - tc); timeElapsed += (System.currentTimeMillis() - tc);
Visualize.visFaceDetection(ARGB8888ImageBitmap, result); Visualize.visFaceDetection(ARGB8888ImageBitmap, result);
modified = result.initialized(); modified = result.initialized();
frameCounter++; frameCounter++;
@@ -310,8 +316,12 @@ public class FaceDetMainActivity extends Activity implements View.OnClickListene
public void initView() { public void initView() {
TYPE = REALTIME_DETECT; TYPE = REALTIME_DETECT;
CameraSurfaceView.EXPECTED_PREVIEW_WIDTH = 720;
CameraSurfaceView.EXPECTED_PREVIEW_HEIGHT = 360;
svPreview = (CameraSurfaceView) findViewById(R.id.sv_preview); svPreview = (CameraSurfaceView) findViewById(R.id.sv_preview);
svPreview.setOnTextureChangedListener(this); svPreview.setOnTextureChangedListener(this);
svPreview.switchCamera(); // Front camera for HumanSeg
tvStatus = (TextView) findViewById(R.id.tv_status); tvStatus = (TextView) findViewById(R.id.tv_status);
btnSwitch = (ImageButton) findViewById(R.id.btn_switch); btnSwitch = (ImageButton) findViewById(R.id.btn_switch);
btnSwitch.setOnClickListener(this); btnSwitch.setOnClickListener(this);
@@ -359,10 +369,11 @@ public class FaceDetMainActivity extends Activity implements View.OnClickListene
if (TYPE == ALBUM_SELECT) { if (TYPE == ALBUM_SELECT) {
SystemClock.sleep(TIME_SLEEP_INTERVAL * 10); // 500ms SystemClock.sleep(TIME_SLEEP_INTERVAL * 10); // 500ms
detail(picBitmap); detail(picBitmap);
picBitmap = originPicBitmap.copy(Bitmap.Config.ARGB_8888, true);
} else { } else {
SystemClock.sleep(TIME_SLEEP_INTERVAL * 10); // 500ms SystemClock.sleep(TIME_SLEEP_INTERVAL * 10); // 500ms
svPreview.onPause();
detail(shutterBitmap); 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) { private void detail(Bitmap bitmap) {
FaceDetectionResult result = predictor.predict(bitmap, true, FaceDetSettingsActivity.scoreThreshold, 0.4f); FaceDetectionResult result = predictor.predict(bitmap, true, resultNum, 0.4f);
if (scores == null) {
scores = result.mScores; scores = result.mScores;
}
initialized = result.initialized(); initialized = result.initialized();
Log.e("GBD", initialized + "---initialized");
if (initialized) { if (initialized) {
for (int i = 0; i < scores.length; i++) { for (int i = 0; i < scores.length; i++) {
if (scores[i] > resultNum) { 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.setAdapter(adapter);
resultView.invalidate(); resultView.invalidate();

View File

@@ -66,8 +66,10 @@ public class OcrMainActivity extends Activity implements View.OnClickListener, C
private TextView seekbarText; private TextView seekbarText;
private float resultNum = 1.0f; private float resultNum = 1.0f;
private ResultListView resultView; private ResultListView resultView;
private Bitmap shutterBitmap;
private Bitmap picBitmap; private Bitmap picBitmap;
private Bitmap shutterBitmap;
private Bitmap originPicBitmap;
private Bitmap originShutterBitmap;
private boolean isShutterBitmapCopied = false; private boolean isShutterBitmapCopied = false;
public static final int TYPE_UNKNOWN = -1; 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 // Clear all setting items to avoid app crashing due to the incorrect settings
initSettings(); initSettings();
// Init the camera preview and UI components
initView();
// Check and request CAMERA and WRITE_EXTERNAL_STORAGE permissions // Check and request CAMERA and WRITE_EXTERNAL_STORAGE permissions
if (!checkAllPermissions()) { if (!checkAllPermissions()) {
requestAllPermissions(); requestAllPermissions();
} }
// Init the camera preview and UI components
initView();
} }
@SuppressLint("NonConstantResourceId") @SuppressLint("NonConstantResourceId")
@@ -216,6 +218,7 @@ public class OcrMainActivity extends Activity implements View.OnClickListener, C
if (!ARGB8888ImageBitmap.isRecycled()) { if (!ARGB8888ImageBitmap.isRecycled()) {
synchronized (this) { synchronized (this) {
shutterBitmap = ARGB8888ImageBitmap.copy(Bitmap.Config.ARGB_8888, true); shutterBitmap = ARGB8888ImageBitmap.copy(Bitmap.Config.ARGB_8888, true);
originShutterBitmap = ARGB8888ImageBitmap.copy(Bitmap.Config.ARGB_8888, true);
} }
SystemClock.sleep(TIME_SLEEP_INTERVAL); SystemClock.sleep(TIME_SLEEP_INTERVAL);
isShutterBitmapCopied = true; isShutterBitmapCopied = true;
@@ -235,6 +238,7 @@ public class OcrMainActivity extends Activity implements View.OnClickListener, C
Uri uri = data.getData(); Uri uri = data.getData();
String path = getRealPathFromURI(this, uri); String path = getRealPathFromURI(this, uri);
picBitmap = decodeBitmap(path, 720, 1280); picBitmap = decodeBitmap(path, 720, 1280);
originPicBitmap = picBitmap.copy(Bitmap.Config.ARGB_8888, true);
resultImage.setImageBitmap(picBitmap); resultImage.setImageBitmap(picBitmap);
} }
} }
@@ -265,12 +269,16 @@ public class OcrMainActivity extends Activity implements View.OnClickListener, C
copyBitmapFromCamera(ARGB8888ImageBitmap); copyBitmapFromCamera(ARGB8888ImageBitmap);
return false; return false;
} }
boolean modified = false; boolean modified = false;
long tc = System.currentTimeMillis(); long tc = System.currentTimeMillis();
OCRResult result = predictor.predict(ARGB8888ImageBitmap, true); OCRResult result = predictor.predict(ARGB8888ImageBitmap);
timeElapsed += (System.currentTimeMillis() - tc); timeElapsed += (System.currentTimeMillis() - tc);
Visualize.visOcr(ARGB8888ImageBitmap, result); Visualize.visOcr(ARGB8888ImageBitmap, result);
modified = result.initialized(); modified = result.initialized();
frameCounter++; frameCounter++;
if (frameCounter >= 30) { if (frameCounter >= 30) {
final int fps = (int) (1000 / (timeElapsed / 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) { if (TYPE == ALBUM_SELECT) {
SystemClock.sleep(TIME_SLEEP_INTERVAL * 10); SystemClock.sleep(TIME_SLEEP_INTERVAL * 10);
detail(picBitmap); detail(picBitmap);
picBitmap = originPicBitmap.copy(Bitmap.Config.ARGB_8888, true);
} else { } else {
SystemClock.sleep(TIME_SLEEP_INTERVAL * 10); SystemClock.sleep(TIME_SLEEP_INTERVAL * 10);
svPreview.onPause();
detail(shutterBitmap); 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) { private void detail(Bitmap bitmap) {
OCRResult result = predictor.predict(bitmap, true); OCRResult result = predictor.predict(bitmap, true);
if (texts == null) {
texts = result.mText; texts = result.mText;
} recScores = result.mRecScores;
if (recScores == null) {
recScores = result.mRecScores;
}
initialized = result.initialized(); initialized = result.initialized();
if (initialized) { if (initialized) {
for (int i = 0; i < texts.length; i++) { for (int i = 0; i < texts.length; i++) {

View File

@@ -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 // Clear all setting items to avoid app crashing due to the incorrect settings
initSettings(); initSettings();
// Init the camera preview and UI components
initView();
// Check and request CAMERA and WRITE_EXTERNAL_STORAGE permissions // Check and request CAMERA and WRITE_EXTERNAL_STORAGE permissions
if (!checkAllPermissions()) { if (!checkAllPermissions()) {
requestAllPermissions(); requestAllPermissions();
} }
// Init the camera preview and UI components
initView();
} }
@SuppressLint("NonConstantResourceId") @SuppressLint("NonConstantResourceId")
@@ -253,12 +253,16 @@ public class SegmentationMainActivity extends Activity implements View.OnClickLi
copyBitmapFromCamera(ARGB8888ImageBitmap); copyBitmapFromCamera(ARGB8888ImageBitmap);
return false; return false;
} }
boolean modified = false; boolean modified = false;
long tc = System.currentTimeMillis(); long tc = System.currentTimeMillis();
SegmentationResult result = predictor.predict(ARGB8888ImageBitmap); SegmentationResult result = predictor.predict(ARGB8888ImageBitmap);
timeElapsed += (System.currentTimeMillis() - tc); timeElapsed += (System.currentTimeMillis() - tc);
Visualize.visSegmentation(ARGB8888ImageBitmap, result); Visualize.visSegmentation(ARGB8888ImageBitmap, result);
modified = result.initialized(); modified = result.initialized();
frameCounter++; frameCounter++;
if (frameCounter >= 30) { if (frameCounter >= 30) {
final int fps = (int) (1000 / (timeElapsed / 30)); final int fps = (int) (1000 / (timeElapsed / 30));
@@ -302,8 +306,12 @@ public class SegmentationMainActivity extends Activity implements View.OnClickLi
public void initView() { public void initView() {
TYPE = REALTIME_DETECT; TYPE = REALTIME_DETECT;
CameraSurfaceView.EXPECTED_PREVIEW_WIDTH = 720;
CameraSurfaceView.EXPECTED_PREVIEW_HEIGHT = 360;
svPreview = (CameraSurfaceView) findViewById(R.id.sv_preview); svPreview = (CameraSurfaceView) findViewById(R.id.sv_preview);
svPreview.setOnTextureChangedListener(this); svPreview.setOnTextureChangedListener(this);
svPreview.switchCamera(); // Front camera for HumanSeg
tvStatus = (TextView) findViewById(R.id.tv_status); tvStatus = (TextView) findViewById(R.id.tv_status);
btnSwitch = (ImageButton) findViewById(R.id.btn_switch); btnSwitch = (ImageButton) findViewById(R.id.btn_switch);
btnSwitch.setOnClickListener(this); btnSwitch.setOnClickListener(this);