负像滤镜到黑白模式

问题描述 投票:0回答:1

我正在使用https://github.com/natario1/CameraView该库来将负像捕获为正像,并且正在使用openGl着色器。我需要一个滤镜,可以在其中以黑白模式(而不是正常的颜色模式)(库中当前可用)将负像捕获为正像。我尝试混合使用这两个滤镜,即首先在彩色模式下将负像捕获为正像,然后应用黑白模式滤镜,但是由于我是openGl的新手,所以我无法做到这一点。请在这方面帮助我。高度赞赏。我正在使用的着色器如下:

This shader is used to convert the negative to positive in color mode.

private final static String FRAGMENT_SHADER = "#extension GL_OES_EGL_image_external : require\n"
            + "precision mediump float;\n"
            + "varying vec2 "+DEFAULT_FRAGMENT_TEXTURE_COORDINATE_NAME+";\n"
            + "uniform samplerExternalOES sTexture;\n"
            + "void main() {\n"
            + "  vec4 color = texture2D(sTexture, "+DEFAULT_FRAGMENT_TEXTURE_COORDINATE_NAME+");\n"
            + "  float colorR = (1.0 - color.r) / 1.0;\n"
            + "  float colorG = (1.0 - color.g) / 1.0;\n"
            + "  float colorB = (1.0 - color.b) / 1.0;\n"
            + "  gl_FragColor = vec4(colorR, colorG, colorB, color.a);\n"
            + "}\n";

This shader is used to change the normal positive image in Black & White mode.

private final static String FRAGMENT_SHADER = "#extension GL_OES_EGL_image_external : require\n"
            + "precision mediump float;\n"
            + "varying vec2 "+DEFAULT_FRAGMENT_TEXTURE_COORDINATE_NAME+";\n"
            + "uniform samplerExternalOES sTexture;\n" + "void main() {\n"
            + "  vec4 color = texture2D(sTexture, "+DEFAULT_FRAGMENT_TEXTURE_COORDINATE_NAME+");\n"
            + "  float colorR = (color.r + color.g + color.b) / 3.0;\n"
            + "  float colorG = (color.r + color.g + color.b) / 3.0;\n"
            + "  float colorB = (color.r + color.g + color.b) / 3.0;\n"
            + "  gl_FragColor = vec4(colorR, colorG, colorB, color.a);\n"
            + "}\n";

Please help in making a filter which can direct capture the negative image to positive in Black & White mode.

Thanks.
android opengl android-camera2
1个回答
1
投票

您可以在单个着色器中使用单线来实现:

gl_FragColor = vec4(vec3(dot(1.0 - color.rgb, vec3(1.0/3.0))), color.a);
© www.soinside.com 2019 - 2024. All rights reserved.