这是我的代码:
public static Bitmap processing(Bitmap src, float hue) {
int width = src.getWidth();
int height = src.getHeight();
Bitmap bitmap = Bitmap.createBitmap(width, height, src.getConfig());
for(int x = 0; x < width; x++) {
for (int y = 0; y < height; y++) {
int newPixel = hueChange(src.getPixel(x, y), hue);
bitmap.setPixel(x, y, newPixel);
}
}
return bitmap;
}
private static int hueChange(int startpixel, float hue) {
float[] hsv = new float[3]; //array to store HSV values
Color.colorToHSV(startpixel,hsv); //get original HSV values of pixel
hsv[0]=hsv[0]+hue; //add the shift to the HUE of HSV array
hsv[0]=hsv[0]%360; //confines hue to values:[0,360]
return Color.HSVToColor(Color.alpha(startpixel),hsv);
}
问题是:如果src位图大小为480x480,processing
最多需要3300毫秒。这对我来说太长了。
最快的方法是什么?
完成!
最快的方法是将OpenCV与NDK一起使用。
答案 0 :(得分:1)
这是最糟糕的方法。如果您曾想过使用setPixel- don。你可能错了。
正确的方式:
Canvas canvas = new Canvas(bitmap);
canvas.drawColor(color);