Можно ли добавить эффект, например, Vertex Shader и Fragment Shader, в предварительный просмотр камеры Android и сохранить захваченное изображение с помощью OpenGLES? - PullRequest
3 голосов
/ 21 октября 2011

Это два файла VertexShader и Fragment Shader:

Файл Vertex Shader:

    attribute vec4 position;
attribute vec4 inputTextureCoordinate;

varying vec2 textureCoordinate;
varying vec4 co;

void main()
{
    gl_Position = position;
    textureCoordinate = inputTextureCoordinate.xy;
    co = inputTextureCoordinate;
}

Файл Fragment Shader:

    uniform sampler2D videoFrame; // the texture with the scene you want to blur
varying mediump vec2 textureCoordinate;
varying mediump vec4 co;
precision mediump float;

vec4 nightVision()
{
    float luminanceThreshold = 0.2; // 0.2
    float colorAmplification = 2.0; // 4.0
    float effectCoverage = 1.0; // 1.0
    vec4 finalColor;
    // Set effectCoverage to 1.0 for normal use.
    if (co.x < effectCoverage)
    {
        vec3 c = texture2D(videoFrame, co.st).rgb;

        float lum = dot(vec3(0.30, 0.59, 0.11), c);
        if (lum < luminanceThreshold) {
            c *= colorAmplification; 
        }
        vec3 visionColor = vec3(0.1, 0.95, 0.2);
        finalColor.rgb = (c) * visionColor;
    } else {
        finalColor = texture2D(videoFrame, co.st);
    }
    vec4 sum = vec4(0.0, 0.0, 0.0, 1.0);
    sum.rgb = finalColor.rgb;
    return sum;
}


void main(void)
{
    gl_FragColor = nightVision();
}

Теперь я хочуИспользуйте этот код, чтобы добавить эффект предварительного просмотра камеры в предварительный просмотр камеры Android.А также хотите сохранить изображение, захваченное этим эффектом.

Так возможно ли это сделать ???Если да, то, пожалуйста, помогите мне с кодом, так как я новичок в OpenGles с камерой Android.

1 Ответ

0 голосов
/ 21 октября 2011

Да, это определенно возможно. Существует множество различных подходов к построению этого, и небольшой пример кода не очень поможет. Основная идея - передать кадры, которые вы получаете с камеры, в OpenGL в качестве текстур.

Извлечение Изображение камеры в виде текстуры OpenGL поверх родного видоискателя камеры . Исходный код должен дать вам представление о том, как действовать.

...