未验证 提交 8235eece 编写于 作者: Z zhoujun 提交者: GitHub

Speed up pixel assignment (#3052)

上级 a846a581
...@@ -465,8 +465,12 @@ public class MainActivity extends AppCompatActivity { ...@@ -465,8 +465,12 @@ public class MainActivity extends AppCompatActivity {
} }
public void btn_load_model_click(View view) { public void btn_load_model_click(View view) {
tvStatus.setText("STATUS: load model ......"); if (predictor.isLoaded()){
loadModel(); tvStatus.setText("STATUS: model has been loaded");
}else{
tvStatus.setText("STATUS: load model ......");
loadModel();
}
} }
public void btn_run_model_click(View view) { public void btn_run_model_click(View view) {
......
...@@ -194,26 +194,25 @@ public class Predictor { ...@@ -194,26 +194,25 @@ public class Predictor {
"supported!"); "supported!");
return false; return false;
} }
int[] channelStride = new int[]{width * height, width * height * 2};
int p = scaleImage.getPixel(scaleImage.getWidth() - 1, scaleImage.getHeight() - 1);
for (int y = 0; y < height; y++) {
for (int x = 0; x < width; x++) {
int color = scaleImage.getPixel(x, y);
float[] rgb = new float[]{(float) red(color) / 255.0f, (float) green(color) / 255.0f,
(float) blue(color) / 255.0f};
inputData[y * width + x] = (rgb[channelIdx[0]] - inputMean[0]) / inputStd[0];
inputData[y * width + x + channelStride[0]] = (rgb[channelIdx[1]] - inputMean[1]) / inputStd[1];
inputData[y * width + x + channelStride[1]] = (rgb[channelIdx[2]] - inputMean[2]) / inputStd[2];
} int[] channelStride = new int[]{width * height, width * height * 2};
int[] pixels=new int[width*height];
scaleImage.getPixels(pixels,0,scaleImage.getWidth(),0,0,scaleImage.getWidth(),scaleImage.getHeight());
for (int i = 0; i < pixels.length; i++) {
int color = pixels[i];
float[] rgb = new float[]{(float) red(color) / 255.0f, (float) green(color) / 255.0f,
(float) blue(color) / 255.0f};
inputData[i] = (rgb[channelIdx[0]] - inputMean[0]) / inputStd[0];
inputData[i + channelStride[0]] = (rgb[channelIdx[1]] - inputMean[1]) / inputStd[1];
inputData[i+ channelStride[1]] = (rgb[channelIdx[2]] - inputMean[2]) / inputStd[2];
} }
} else if (channels == 1) { } else if (channels == 1) {
for (int y = 0; y < height; y++) { int[] pixels=new int[width*height];
for (int x = 0; x < width; x++) { scaleImage.getPixels(pixels,0,scaleImage.getWidth(),0,0,scaleImage.getWidth(),scaleImage.getHeight());
int color = inputImage.getPixel(x, y); for (int i = 0; i < pixels.length; i++) {
float gray = (float) (red(color) + green(color) + blue(color)) / 3.0f / 255.0f; int color = pixels[i];
inputData[y * width + x] = (gray - inputMean[0]) / inputStd[0]; float gray = (float) (red(color) + green(color) + blue(color)) / 3.0f / 255.0f;
} inputData[i] = (gray - inputMean[0]) / inputStd[0];
} }
} else { } else {
Log.i(TAG, "Unsupported channel size " + Integer.toString(channels) + ", only channel 1 and 3 is " + Log.i(TAG, "Unsupported channel size " + Integer.toString(channels) + ", only channel 1 and 3 is " +
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册