Применение пользовательских фильтров к выходным данным камеры

Как применить настраиваемые фильтры к отдельным кадрам на выходе камеры и показать их.

То, что я пробовал до сих пор:

mCamera.setPreviewCallback(new CameraGreenFilter());

public class CameraGreenFilter implements PreviewCallback {

    @Override
    public void onPreviewFrame(byte[] data, Camera camera) {
        final int len = data.length;
        for(int i=0; i<len; ++i){
            data[i] *= 2;
        }
    }
}
  • Хотя его имя содержит «зеленый», на самом деле я просто хочу как-то изменить значения (в этом случае цвета будут немного усилены). Короче говоря, не работает.

  • Я понял, что байтовый массив data является копией вывода камеры; но на самом деле это не помогает, потому что мне нужен «настоящий» буфер.

  • Я слышал, что это можно реализовать с помощью openGL. Звучит очень сложно.

Есть ли способ попроще? Иначе, как будет работать это сопоставление openGL-surfaceView?

16
задан McGarnagle 20 August 2012 в 21:07
поделиться