Speed up pixel assignment (#3052)
This commit is contained in:
parent
a846a58157
commit
8235eece1e
|
@ -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 {
|
||||||
"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 " +
|
||||||
|
|
Loading…
Reference in New Issue