Я пытаюсь применить ядро 3x3 к растровому изображению, используя инстинкты Renderscript. Но как я могу указать, какой канал (R, G, B, A) будет затронут операцией? Я пробовал это:
private Bitmap process(Bitmap src){
RenderScript rs = RenderScript.create(this);
Bitmap result = Bitmap.createBitmap(currentBitmap.getWidth(), currentBitmap.getHeight(), currentBitmap.getConfig());
Allocation input = Allocation.createFromBitmap(rs, currentBitmap);
Allocation output = Allocation.createTyped(rs, input.getType());
float[] kernel = {
0.25f, 0.5f, 0.25f,
0f, 0f, 0f,
-0.25f, -0.5f, -0,25f
};
Element element = Element.createPixel(rs, Element.DataType.UNSIGNED_5_6_5, Element.DataKind.PIXEL_RGB);
ScriptIntrinsicConvolve3x3 script = ScriptIntrinsicConvolve3x3.create(rs, element);
script.setInput(input);
script.setCoefficients(kernel);
script.forEach(output);
output.copyTo(result);
rs.destroy();
input.destroy();
output.destroy();
script.destroy();
return result;
}
Но это не похоже на работу. Я надеюсь, что у кого-то есть идея.