IOS – OpenGL ES 桑原滤波/水粉画模糊效果 GPUImageKuwaharaFilter

目录

  • 一.简介
  • 二.效果演示
  • 三.源码下载
  • 四.猜你喜欢

零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目录 >> OpenGL ES 基础

零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目录 >> OpenGL ES 转场

零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目录 >> OpenGL ES 特效

零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目录 >> OpenGL ES 函数

零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目录 >> OpenGL ES GPUImage 使用

零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目录 >> OpenGL ES GLSL 编程

一.简介

GPUImage 共 125 个滤镜, 分为四类

1、Color adjustments : 31 filters , 颜色处理相关
2、Image processing : 40 filters , 图像处理相关.
3、Blending modes : 29 filters , 混合模式相关.
4、Visual effects : 25 filters , 视觉效果相关.

**GPUImageKuwaharaFilter GPUImage 图像桑原滤波/水粉画模糊效果,**shader 源码如下:

/******************************************************************************************/
//@Author:猿说编程
//@Blog(个人博客地址): www.codersrc.com
//@File:IOS – OpenGL ES 桑原滤波/水粉画模糊效果 GPUImageKuwaharaFilter
//@Time:2022/05/15 10:30
//@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
/******************************************************************************************/
#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE
NSString *const kGPUImageKuwaharaFragmentShaderString = SHADER_STRING
(varying highp vec2 textureCoordinate;uniform sampler2D inputImageTexture;uniform int radius;precision highp float;const vec2 src_size = vec2 (1.0 / 768.0, 1.0 / 1024.0);void main (void){vec2 uv = textureCoordinate;float n = float((radius + 1) * (radius + 1));int i; int j;vec3 m0 = vec3(0.0); vec3 m1 = vec3(0.0); vec3 m2 = vec3(0.0); vec3 m3 = vec3(0.0);vec3 s0 = vec3(0.0); vec3 s1 = vec3(0.0); vec3 s2 = vec3(0.0); vec3 s3 = vec3(0.0);vec3 c;for (j = -radius; j <= 0; ++j)  {for (i = -radius; i <= 0; ++i)  {c = texture2D(inputImageTexture, uv + vec2(i,j) * src_size).rgb;m0 += c;s0 += c * c;}}for (j = -radius; j <= 0; ++j)  {for (i = 0; i <= radius; ++i)  {c = texture2D(inputImageTexture, uv + vec2(i,j) * src_size).rgb;m1 += c;s1 += c * c;}}for (j = 0; j <= radius; ++j)  {for (i = 0; i <= radius; ++i)  {c = texture2D(inputImageTexture, uv + vec2(i,j) * src_size).rgb;m2 += c;s2 += c * c;}}for (j = 0; j <= radius; ++j)  {for (i = -radius; i <= 0; ++i)  {c = texture2D(inputImageTexture, uv + vec2(i,j) * src_size).rgb;m3 += c;s3 += c * c;}}float min_sigma2 = 1e+2;m0 /= n;s0 = abs(s0 / n - m0 * m0);float sigma2 = s0.r + s0.g + s0.b;if (sigma2 < min_sigma2) {min_sigma2 = sigma2;gl_FragColor = vec4(m0, 1.0);}m1 /= n;s1 = abs(s1 / n - m1 * m1);sigma2 = s1.r + s1.g + s1.b;if (sigma2 < min_sigma2) {min_sigma2 = sigma2;gl_FragColor = vec4(m1, 1.0);}m2 /= n;s2 = abs(s2 / n - m2 * m2);sigma2 = s2.r + s2.g + s2.b;if (sigma2 < min_sigma2) {min_sigma2 = sigma2;gl_FragColor = vec4(m2, 1.0);}m3 /= n;s3 = abs(s3 / n - m3 * m3);sigma2 = s3.r + s3.g + s3.b;if (sigma2 < min_sigma2) {min_sigma2 = sigma2;gl_FragColor = vec4(m3, 1.0);}}
);
#else
NSString *const kGPUImageKuwaharaFragmentShaderString = SHADER_STRING
(varying vec2 textureCoordinate;uniform sampler2D inputImageTexture;uniform int radius;const vec2 src_size = vec2 (1.0 / 768.0, 1.0 / 1024.0);void main (void){vec2 uv = textureCoordinate;float n = float((radius + 1) * (radius + 1));int i; int j;vec3 m0 = vec3(0.0); vec3 m1 = vec3(0.0); vec3 m2 = vec3(0.0); vec3 m3 = vec3(0.0);vec3 s0 = vec3(0.0); vec3 s1 = vec3(0.0); vec3 s2 = vec3(0.0); vec3 s3 = vec3(0.0);vec3 c;for (j = -radius; j <= 0; ++j)  {for (i = -radius; i <= 0; ++i)  {c = texture2D(inputImageTexture, uv + vec2(i,j) * src_size).rgb;m0 += c;s0 += c * c;}}for (j = -radius; j <= 0; ++j)  {for (i = 0; i <= radius; ++i)  {c = texture2D(inputImageTexture, uv + vec2(i,j) * src_size).rgb;m1 += c;s1 += c * c;}}for (j = 0; j <= radius; ++j)  {for (i = 0; i <= radius; ++i)  {c = texture2D(inputImageTexture, uv + vec2(i,j) * src_size).rgb;m2 += c;s2 += c * c;}}for (j = 0; j <= radius; ++j)  {for (i = -radius; i <= 0; ++i)  {c = texture2D(inputImageTexture, uv + vec2(i,j) * src_size).rgb;m3 += c;s3 += c * c;}}float min_sigma2 = 1e+2;m0 /= n;s0 = abs(s0 / n - m0 * m0);float sigma2 = s0.r + s0.g + s0.b;if (sigma2 < min_sigma2) {min_sigma2 = sigma2;gl_FragColor = vec4(m0, 1.0);}m1 /= n;s1 = abs(s1 / n - m1 * m1);sigma2 = s1.r + s1.g + s1.b;if (sigma2 < min_sigma2) {min_sigma2 = sigma2;gl_FragColor = vec4(m1, 1.0);}m2 /= n;s2 = abs(s2 / n - m2 * m2);sigma2 = s2.r + s2.g + s2.b;if (sigma2 < min_sigma2) {min_sigma2 = sigma2;gl_FragColor = vec4(m2, 1.0);}m3 /= n;s3 = abs(s3 / n - m3 * m3);sigma2 = s3.r + s3.g + s3.b;if (sigma2 < min_sigma2) {min_sigma2 = sigma2;gl_FragColor = vec4(m3, 1.0);}}
);
#endif

二.效果演示

**使用 GPUImageKuwaharaFilter** ** 用来图像卡通效果(黑色粗线描边)**,原图:

**GPUImageKuwaharaFilter** 用来图像卡通效果(黑色粗线描边),效果图:

三.源码下载

OpenGL ES Demo 下载地址 : IOS – OpenGL ES 桑原滤波/水粉画模糊效果 GPUImageKuwaharaFilter

四.猜你喜欢

  1. IOS – OPenGL ES 设置图像亮度 GPUImageBrightnessFilter
  2. IOS – OPenGL ES 调节图像曝光度 GPUImageExposureFilter
  3. IOS – OpenGL ES 调节图像对比度 GPUImageContrastFilter
  4. IOS – OPenGL ES 调节图像饱和度 GPUImageSaturationFilter
  5. IOS – OPenGL ES 调节图像伽马线 GPUImageGammaFilter
  6. IOS – OpenGL ES 调节图像反色 GPUImageColorInvertFilter
  7. IOS – OpenGL ES 调节图像褐色 GPUImageSepiaFilter
  8. IOS – OpenGL ES 调节图像灰色 GPUImageGrayscaleFilter
  9. IOS – OpenGL ES 调节图像 RGB 通道 GPUImageRGBFilter
  10. IOS – OpenGL ES 调节图像不透明度 GPUImageOpacityFilter
  11. IOS – OpenGL ES 调节图像阴影 GPUImageHighlightShadowFilter
  12. IOS – OpenGL ES 调节图像色彩替换 GPUImageFalseColorFilter
  13. GPUImage – 色彩直方图 GPUImageHistogramFilter
  14. GPUImage – 色彩直方图 GPUImageHistogramGenerator
  15. GPUImage – 像素平均色值 GPUImageAverageColor
  16. GPUImage – 亮度平均 GPUImageLuminosity
  17. IOS – OpenGL ES 调节图像色度 GPUImageHueFilter
  18. IOS – OpenGL ES 指定颜色抠图 GPUImageChromaKeyFilter
  19. IOS – OpenGL ES 调节图像白平衡/色温 GPUImageWhiteBalanceFilter
  20. IOS – OpenGL ES 设置图像 lookup 滤镜 GPUImageLookupFilter
  21. IOS – OpenGL ES 设置图像滤镜 GPUImageAmatorkaFilter
  22. IOS – OpenGL ES 设置图像滤镜 GPUImageSoftEleganceFilter
  23. IOS – OpenGL ES 设置图像锐化 GPUImageSharpenFilter
  24. IOS – OpenGL ES 绘制十字 GPUImageCrosshairGenerator
  25. IOS – OpenGL ES 绘制线条 GPUImageLineGenerator
  26. IOS – OpenGL ES 设置图像黑白燥点 GPUImageLocalBinaryPatternFilter
  27. IOS – OpenGL ES 设置图像卡通效果(黑色粗线描边) GPUImageToonFilter
  28. IOS – OpenGL ES 桑原滤波/水粉画模糊效果 GPUImageKuwaharaFilter

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/524529.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Docker精华问答 | 如何让一个容器连接两个网络?

如今Docker的使用已经非常普遍&#xff0c;特别在一线互联网公司。使用Docker技术可以帮助企业快速水平扩展服务&#xff0c;从而到达弹性部署业务的能力。在云服务概念兴起之后&#xff0c;Docker的使用场景和范围进一步发展。今天&#xff0c;就让我们来看看关于Docker的深度…

IOS – OpenGL ES 黑白马赛克效果 GPUImageMosaicFilter

目录 一.简介二.效果演示三.源码下载四.猜你喜欢 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目录 >> OpenGL ES 基础 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目录 >> OpenGL ES 转场 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目…

人生苦短,Python之父要解开这个困惑

“我累了&#xff0c;需要很长时间的休息。”2018 年 7 月&#xff0c;在 PEP 572&#xff08;Python 改进提案&#xff09; 被接受后的第三天&#xff0c;由于仍然不断面对着别人的质疑&#xff0c;反馈意见不断袭来&#xff0c;让这位一手缔造新的编程语言帝国的图灵奖获得者…

IOS – OpenGL ES 卡通效果(黑色粗线描边) GPUImageToonFilter

目录 一.简介二.效果演示三.源码下载四.猜你喜欢 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目录 >> OpenGL ES 基础 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目录 >> OpenGL ES 转场 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目…

云重磅 | 收购季:英伟达天价收购Mellanox;F5 6.7亿喜提Nginx;5G潮起3G潮落 中国移动耗资3000亿...

戳蓝字“CSDN云计算”关注我们哦&#xff01;嗨&#xff0c;大家好&#xff0c;重磅君带来的【云重磅】特别栏目&#xff0c;如期而至&#xff0c;每周二第一时间为大家带来重磅新闻。把握技术风向标&#xff0c;了解行业应用与实践&#xff0c;就交给我重磅君吧&#xff01;重…

IOS – OpenGL ES 像素化马赛克效果 GPUImagePixellateFilter

目录 一.简介二.效果演示三.源码下载四.猜你喜欢 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目录 >> OpenGL ES 基础 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目录 >> OpenGL ES 转场 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目…

波音737连续坠毁,AI要背锅?

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者 | 若名出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;2018 年 10 月 29 日&#xff0c;印尼狮航的波音 737MAX8 客机在起飞 13 分钟后坠海&#xff0c;机上 178 名乘客全部不幸遇难。2019 年 3 月 10 日&#xff0c…

IOS – OpenGL ES 同心圆像素化马赛克效果 GPUImagePolarPixel

目录 一.简介二.效果演示三.源码下载四.猜你喜欢 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目录 >> OpenGL ES 基础 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目录 >> OpenGL ES 转场 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目…

云计算时代运维的出路在哪?

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者&#xff1a;王洪鹏做过开发&#xff0c;搞过运维&#xff0c;又在在云计算行业折腾了几年&#xff0c;不说自己技术怎样、怎样……&#xff0c;暂且说说笔者在当前公司做云计算这几年的些许感悟&#xff0c;兴许可以给正在从事…

VSFTPD 服务器 3秒钟搭建

文章目录一、常用命令&#xff08;Linux&#xff09;二、搭建Vsftpd流程2.1. 检测系统2.2. yum安装一、常用命令&#xff08;Linux&#xff09; 作用命令启动sudo service vsftpd start关闭sudo service vsftpd stop重启sudo service vsftpd restart查看运行状态sudo service …

IOS – OpenGL ES 黑白网状效果 GPUImageCrosshatchFilter

目录 一.简介二.效果演示三.源码下载四.猜你喜欢 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目录 >> OpenGL ES 基础 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目录 >> OpenGL ES 转场 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目…

IEDA 配置Git_04

前提&#xff1a;打开idea CtrlAltS打开设置&#xff1a; 路径&#xff1a;File\seeting\version control\git

要闻君说:苹果又要新品发布啦;英伟达壕气,狂砸69亿收购Mellanox;谷歌瞄准印度小学生,推出AI学习工具;...

关注并标星星CSDN云计算每周三次&#xff0c;打卡即read更快、更全了解泛云圈精彩newsgo go go 大家好&#xff01;偶是要闻君。话说每年的苹果新品发布会都会被列入“熬夜也要看一看”的名单中&#xff0c;3月将尽&#xff0c;今年又有什么苹果新料可爆&#xff1f;前瞻一把&a…

IOS – OpenGL ES 色彩丢失/模糊效果 GPUImageColorPackingFilter

目录 一.简介二.效果演示三.源码下载四.猜你喜欢 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目录 >> OpenGL ES 基础 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目录 >> OpenGL ES 转场 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目…

Git 用户名和邮箱配置_01

文章目录1. 打开 git bash here2. 用户名和邮箱配置1. 打开 git bash here 2. 用户名和邮箱配置 git config --global user.name "用户名" git config --global user.email "邮箱" git config --list

Storm精华问答 | 如何处理常见故障?

Hadoop能够进行大批量数据的离线处理,但是在实时计算上的表现实在是不尽如人意;而Storm就可以担当这部分的角色&#xff0c;今天&#xff0c;就让我们看看关于Storm的精华问答吧。1Q&#xff1a;发布topology到远程集群时&#xff0c;出现AlreadyAliveException(msg: xxx is al…

IOS – OpenGL ES 图像晕影移动 GPUImageVignetteFilter

目录 一.简介二.效果演示三.源码下载四.猜你喜欢 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目录 >> OpenGL ES 基础 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目录 >> OpenGL ES 转场 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目…

以安全之名:2019年DevSecOps社区调研白皮书解读

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者&#xff1a;刘淼&#xff0c;HPE架构师&#xff0c;慧与大学讲师&#xff0c;Exin DevOps Master和DevOps Professional授权讲师&#xff0c;CSDN博主(liumiaocn)&#xff0c;爱老婆爱厨艺的终身技术学习者。2019年3月5号&…

docker Gitlab14.5.0 安装、配置、部署、使用

文章目录一、镜像容器1. 安装Docker2. 查找GitLab镜像3. 拉取镜像4. 创建容器二、修改配置文件2.1. gitlab.rb2.2. 重启gitlab容器2.3. 监控日志三、效果验证3.1. 登录gitlab3.2. 获取密码3.3. 创建一个项目四、用户使用1.下载git.exe4.2. 设置ssh4.3. 秘钥查验4.4. 秘钥同步4.…

try-catch 异常处理的执行过程

public void exception(){try{System.out.println("一");System.out.println(2/0);System.out.println("二");}catch(ArithmeticException m){System.out.println("异常解决了");}System.out.println("三");}try中没有异常&#xff0c…