1.嘴唇检测并改掉色,不准确时可能和相同有关,关于嘴唇颜色检测参考文章

https://blog.csdn.net/Trent1985/article/details/46330847

private static final String CAMERA_INPUT_FRAGMENT_SHADER_OES = "" +
            "#extension GL_OES_EGL_image_external : require\n" +
            "\n" +
            "precision mediump float;\n" +
            "varying vec2 textureCoordinate;\n" +
            "uniform samplerExternalOES inputImageTexture;\n" +
            "\n" +
            "void main()\n" +
            "{\n" +
            "    vec4 nColor=texture2D(inputImageTexture, textureCoordinate);\n"+
            "    if (log(nColor.g / (pow(nColor.b, 0.391) * pow(nColor.r, 0.609))) < -0.4)\n"+
            "    {\n"+
            "         gl_FragColor = vec4(1.0, 1.0, 1.0, nColor.a);\n"+
            "    }\n"+
            "    else\n"+
            "    {\n" +
            "         gl_FragColor = nColor;\n"+
            "    }\n"+
            "}";

2.计算高斯模糊
precision mediump float;

//在片元着色器这里添加这个 sampler2D 表示我们要添加2D贴图
uniform sampler2D u_TextureUnit;

varying vec2 v_TextureCoordinates;

void main(){
    vec4 color = vec4(0.0);
    int coreSize=3;
    int halfSize=coreSize/2;
    float texelOffset = 0.01;
    //创建我们计算好的卷积核
    float kernel[9];
    kernel[6] = 1.0; kernel[7] = 2.0; kernel[8] = 1.0;
    kernel[3] = 2.0; kernel[4] = 4.0; kernel[5] = 2.0;
    kernel[0] = 1.0; kernel[1] = 2.0; kernel[2] = 1.0;
    int index = 0;
    //每一块都进行图像卷积。
    for(int y=0;y<coreSize;y++)
    {
        for(int x = 0;x<coreSize;x++)
        {
            vec4 currentColor = texture2D(u_TextureUnit,v_TextureCoordinates+vec2(float((-1+x))*texelOffset,float((-1+y))*texelOffset));
            color += currentColor*kernel[index];
            index++;
        }
    }
    //归一处理
    color/=16.0;

gl_FragColor=color;
}

3黑白滤镜

precision mediump float;

//在片元着色器这里添加这个 sampler2D 表示我们要添加2D贴图
uniform sampler2D u_TextureUnit;
//定义一个u_ChangeColor,因为颜色的变量是RGB,所以使用vec3
uniform vec3 u_ChangeColor;

varying vec2 v_TextureCoordinates;

void main(){
    //得到2d color
    vec4 nColor=texture2D(u_TextureUnit,v_TextureCoordinates);
   //黑白图片
    float c= nColor.r*u_ChangeColor.r+nColor.g*u_ChangeColor.g+nColor.b*u_ChangeColor.b;
    gl_FragColor = vec4(c,c,c,nColor.a);
}
4冷暖色调的处理
与上面的黑白色的处理相似,冷色调的处理就是单一增加蓝色通道的值,暖色调的处理可以增加红绿通道的值。

precision mediump float;

//在片元着色器这里添加这个 sampler2D 表示我们要添加2D贴图
uniform sampler2D u_TextureUnit;
//定义一个u_ChangeColor,因为颜色的变量是RGB,所以使用vec3
uniform vec3 u_ChangeColor;
varying vec2 v_TextureCoordinates;

//modifyColor.将color限制在rgb
void modifyColor(vec4 color){
    color.r=max(min(color.r,1.0),0.0);
    color.g=max(min(color.g,1.0),0.0);
    color.b=max(min(color.b,1.0),0.0);
    color.a=max(min(color.a,1.0),0.0);
}

void main(){
    //得到2d color
    vec4 nColor=texture2D(u_TextureUnit,v_TextureCoordinates);
    //简单色彩处理,冷暖色调、增加亮度、降低亮度等
        vec4 deltaColor=nColor+vec4(u_ChangeColor,0.0);
        modifyColor(deltaColor);
        gl_FragColor=deltaColor;
}

5改色

"vec4 nColor=texture2D(inputImageTexture, textureCoordinate);\n"+
            "if (nColor.r<0.5 && nColor.g<0.5 && nColor.b<0.5)" +
            "{\n"+
            "    gl_FragColor = vec4(1.0,1.0,1.0,nColor.a);\n" +
            "}\n" +
            "else\n" +
            "{\n"+
            "    gl_FragColor = texture2D(inputImageTexture, textureCoordinate);\n" +
            "}\n"+

参考:

https://blog.csdn.net/qq_33275597/article/details/80869913

https://blog.csdn.net/qq_33275597/article/details/80869913

https://www.jianshu.com/p/320980800358
光照
https://blog.csdn.net/yulinxx/article/details/72720963
https://blog.csdn.net/yulinxx/article/details/53670481

https://cloud.tencent.com/developer/article/1155487

海洋

https://blog.csdn.net/vily_lei/article/details/80919052

相机

https://cloud.tencent.com/developer/article/1175711

相机特效

https://cloud.tencent.com/developer/article/1185194

美颜滤波

https://blog.csdn.net/King1425/article/details/77776931?locationNum=4&fps=1

opengl相机通过shader修改片断着色器来实现换色,改色,肤色检测等特殊效果相关推荐

  1. Unity Shader(深入了解顶点片断着色器)

    Unity Shader(深入了解顶点片断着色器) 什么是渲染流水线 大致可以分为以下三个大阶段: 应用阶段(Application Stage): 就是我们的原始素材准备阶段,包括我们的模型.贴图. ...

  2. OpenGL入门(三)之着色器Shader

    本系列文章为Learn OpenGL个人学习总结! OpenGL入门(一)之认识OpenGL和创建Window OpenGL入门(二)之渲染管线pipeline,VAO.VBO和EBO OpenGL入 ...

  3. OpenGL shader class自定义着色器的实例

    OpenGL shader class自定义着色器 先上图,再解答. 完整主要的源代码 源代码剖析 先上图,再解答. 完整主要的源代码 #include <glad/glad.h> #in ...

  4. OpenGL Compute Shader Raytracing 计算着色器光线追踪的实例

    OpenGL Compute Shader Raytracing 计算着色器光线追踪 先上图,再解答. 完整主要的源代码 源代码剖析 先上图,再解答. 完整主要的源代码 // #define USE_ ...

  5. OpenGL 2D贴图texture与着色器Shader

    OpenGL 2D贴图texture与着色器Shader 运行效果 利用GLSL操作shader着色器实现平移.纹理与顶点颜色的叠加处理: 利用GLSL操作shader着色器实现平移.旋转等操作: 定 ...

  6. OpenGL ES _ 着色器_片断着色器详解

    OpenGL ES _ 入门_01 OpenGL ES _ 入门_02 OpenGL ES _ 入门_03 OpenGL ES _ 入门_04 OpenGL ES _ 入门_05 OpenGL ES ...

  7. Unity Shader - Predefined Shader preprocessor macros 着色器预处理宏

    目录:Unity Shader - 知识点目录(先占位,后续持续更新) 原文:Predefined Shader preprocessor macros 版本:2019.1 Predefined Sh ...

  8. Unity Shader:细分着色器(Tessellation Shader)在Unity顶点着色器中的写法以及各参数变量解释

    图1:在Unity内将sphere细分后 图2:在Unity内将sphere细分后 Unity官网关于细分着色器的资料比较少,只有在Surface Shader中使用的例子.我看了下Surface S ...

  9. 【我的OpenGL学习进阶之旅】着色器和程序(上)------着色器

    着色器和程序 一.前言 二.着色器和程序 2.1 创建和编译一个着色器 2.1.1 创建着色器 2.1.2 删除着色器 2.1.3 提供着色器源代码 2.1.4 编译色器 2.1.4 查询有关着色器对 ...

最新文章

  1. 关于打开新链接,用当前页还是用新页面?
  2. 【C++基础 09】避免对象的拷贝
  3. armv7的linux系统,CentOS 7(1611) for ARM(armhfp)发布
  4. 华南理工计算机接口技术随堂练习_研究生考试计算机408跟845有什么区别?
  5. H5-geolocation学习
  6. 对python的功能和扩展功能的认知_Python基础-基础认知和库了解
  7. java 蓝牙指定连接失败_java – Android蓝牙连接 – 服务发现失败
  8. css 平行四边形 梯形 组合_微课|人教版五年级数学上册6.4组合图形的面积(P99)...
  9. java的各种加载和初始化的详细过程
  10. 浏览文件服务器,浏览文件服务器
  11. python list append 相关知识点
  12. vue网页打印后事件失效
  13. JZOJ100047. 【NOIP2017提高A组模拟7.14】基因变异
  14. AI-Tesseract4.0-OCR训练相关
  15. 软件测试自学入门书籍
  16. 奇异值分解的几何原理
  17. 透视变换(perspective transformation)
  18. 手把手教你用Java实现一个“网易云音乐”
  19. adb卸载和安装系统应用
  20. CCTV[经济半小时]2009民生报告:安身立业

热门文章

  1. EmotioNet_
  2. Python数学建模系列(六):蒙特卡洛算法
  3. react 关于iconfont图标应用和动态图标
  4. 我看google事件
  5. 百度不收录怎么办?教大家五个简单办法
  6. 4.3 并发技术:管道通信
  7. C++笔记(十四)——this指针
  8. 使用ffmpeg添加rtsp字幕流 (t140)
  9. 学习泰课的Unity3D黑暗之光RPG游戏开发(一)——学习目录介绍
  10. Python2.7+ROS环境:AttributeError:‘module’ has no attribute ‘CALIB_HAND_EYE_TSAI’