前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >IOS – OpenGL ES 图像哈哈镜效果 GPUImageStretchDistortionFilter

IOS – OpenGL ES 图像哈哈镜效果 GPUImageStretchDistortionFilter

原创
作者头像
猿说编程[Python和C]
发布于 2023-04-01 00:23:07
发布于 2023-04-01 00:23:07
24800
代码可运行
举报
文章被收录于专栏:猿说编程猿说编程
运行总次数:0
代码可运行

一.简介

GPUImage 共 125 个滤镜, 分为四类

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

GPUImageStretchDistortionFilter 属于 GPUImage 图像视觉效果相关,用来处理图像哈哈镜shader 源码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/******************************************************************************************/
//@Author:猿说编程
//@Blog(个人博客地址): www.codersrc.com
//@File:IOS – OpenGL ES 图像哈哈镜效果 GPUImageStretchDistortionFilter
//@Time:2022/06/02 06:30
//@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
/******************************************************************************************/

#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE
NSString *const kGPUImageStretchDistortionFragmentShaderString = SHADER_STRING
(
 varying highp vec2 textureCoordinate;

 uniform sampler2D inputImageTexture;

 uniform highp vec2 center;

 void main()
 {
     highp vec2 normCoord = 2.0 * textureCoordinate - 1.0;
     highp vec2 normCenter = 2.0 * center - 1.0;

     normCoord -= normCenter;
     mediump vec2 s = sign(normCoord);
     normCoord = abs(normCoord);
     normCoord = 0.5 * normCoord + 0.5 * smoothstep(0.25, 0.5, normCoord) * normCoord;
     normCoord = s * normCoord;

     normCoord += normCenter;

     mediump vec2 textureCoordinateToUse = normCoord / 2.0 + 0.5;


     gl_FragColor = texture2D(inputImageTexture, textureCoordinateToUse );

 }
);
#else
NSString *const kGPUImageStretchDistortionFragmentShaderString = SHADER_STRING
(
 varying vec2 textureCoordinate;

 uniform sampler2D inputImageTexture;

 uniform vec2 center;

 void main()
 {
     vec2 normCoord = 2.0 * textureCoordinate - 1.0;
     vec2 normCenter = 2.0 * center - 1.0;

     normCoord -= normCenter;
     vec2 s = sign(normCoord);
     normCoord = abs(normCoord);
     normCoord = 0.5 * normCoord + 0.5 * smoothstep(0.25, 0.5, normCoord) * normCoord;
     normCoord = s * normCoord;

     normCoord += normCenter;

     vec2 textureCoordinateToUse = normCoord / 2.0 + 0.5;

     gl_FragColor = texture2D(inputImageTexture, textureCoordinateToUse);
 }
);
#endif

二.效果演示

使用 **GPUImageStretchDistortionFilter** 完成图像哈哈镜效果,原图:

使用 **GPUImageStretchDistortionFilter 完成图像哈哈镜效果:

三.源码下载

OpenGL ES Demo 下载地址 : IOS – OpenGL ES 图像凹面镜效果 GPUImagePinchDistortionFilter

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
[阿里DIN]从模型源码梳理TensorFlow的形状相关操作
本文基于阿里推荐 DIN 和 DIEN 代码,梳理了下深度学习一些概念,以及TensorFlow中的相关实现。
罗西的思考
2020/11/24
8840
[论文解读] 阿里DIEN整体代码结构
DIEN是阿里深度兴趣进化网络(Deep Interest Evolution Network)的缩写。
罗西的思考
2020/11/11
1.6K0
[论文解读] 阿里DIEN整体代码结构
tensorflow之tf.tile\tf.slice等函数的基本用法解读
解读: tensorflow中的tile()函数是用来对张量(Tensor)进行扩展的,其特点是对当前张量内的数据进行一定规则的复制。最终的输出张量维度不变。
学到老
2019/07/03
2.8K0
tensorflow之tf.tile\tf.slice等函数的基本用法解读
图深度学习入门教程(一)——基础类型
主要是基于图深度学习的入门内容。讲述最基本的基础知识,其中包括深度学习、数学、图神经网络等相关内容。该教程由代码医生工作室出版的全部书籍混编节选而成。偏重完整的知识体系和学习指南。在实践方面不会涉及太多基础内容 (实践和经验方面的内容,请参看原书)。
代码医生工作室
2020/03/04
1.6K0
图深度学习入门教程(一)——基础类型
tensorflow语法【tf.matmul() 、loc和iloc函数、tf.expand_dims()】
【一】tensorflow安装、常用python镜像源、tensorflow 深度学习强化学习教学
汀丶人工智能
2022/12/01
8580
TensorFlow2 一小时学会基本操作 2
https://iamarookie.blog.csdn.net/article/details/117651502
润森
2022/09/22
3360
TensorFlow2 一小时学会基本操作 2
tensorflow运行mnist的一些
最近在tensorflow环境下用CNN来实现mnist,里面设计了一些tensorflow的函数,在之后的学习中肯定会经常使用,因此记录整理下来。
py3study
2020/01/20
5070
【tensorflow2.0】张量的数学运算
张量数学运算主要有:标量运算,向量运算,矩阵运算。另外我们会介绍张量运算的广播机制。
西西嘛呦
2020/08/26
2.2K0
教程 | 维度、广播操作与可视化:如何高效使用TensorFlow
选自GitHub 机器之心编译 参与:Nurhachu Null、李泽南 本文从 Tensorflow 基础、理解静态维度和动态维度、广播操作(Broadingcast 的好处和坏处)、使用 Python 操作的原型内核和先进的可视化等几个方面详细梳理如何高效使用TensorFlow。 Tensorflow 基础 TensorFlow 和其他诸如 numpy 之类的数学计算库的根本区别在于:在 TensorFlow 中,运算操作是符号化的。这是一个强大的思想,它能够让 TensorFlow 做任何事情(例如
机器之心
2018/05/09
1.4K0
tensorflow(一)windows 10 python3.6安装tensorflow1.4与基本概念解读
一.安装 目前用了tensorflow、deeplearning4j两个深度学习框架, tensorflow 之前一直支持到python 3.5,目前以更新到3.6,故安装最新版体验使用。
学到老
2018/03/19
1.6K0
tensorflow(一)windows 10 python3.6安装tensorflow1.4与基本概念解读
TensorFlow2.0(2):数学运算
可以看出,对于基本运算加(+)、减(-)、点乘(*)、除(/)、地板除法(//)、取余(%),都是对应元素进行运算。
Ai学习的老章
2019/12/23
2.1K0
tensorflow(一)windows 10 64位安装tensorflow1.4与基本概念解读tf.global_variables_initializer
一.安装 目前用了tensorflow、deeplearning4j两个深度学习框架, tensorflow 之前一直支持到python 3.5,目前以更新到3.6,故安装最新版体验使用。 慢
学到老
2018/03/19
9280
tensorflow(一)windows 10 64位安装tensorflow1.4与基本概念解读tf.global_variables_initializer
Tensorflow 搭建神经网络 (一)
本文为中国大学MOOC课程《人工智能实践:Tensorflow笔记》的笔记中搭建神经网络,总结搭建八股的部分
拾点阳光
2018/05/07
1.8K1
Tensorflow 搭建神经网络 (一)
tf.matmul() 和tf.multiply()
注意:  (1)multiply这个函数实现的是元素级别的相乘,也就是两个相乘的数元素各自相乘,而不是矩阵乘法,注意和tf.matmul区别。  (2)两个相乘的数必须有相同的数据类型,不然就会报错。
周小董
2019/03/25
3.4K0
tf.matmul() 和tf.multiply()
深度学习|Tensorflow2.0基础
Tensorflow 是一个面向深度学习算法的科学计算库,内部数据保存在张量(Tensor)对象熵,所有的运算操作(Operation)也都是基于张量对象进行的,我们所接触到的复杂的神经网络算法本质上就是各种张量相乘,想加等一些基本运算操作的组合。
数据山谷
2020/07/21
8130
TensorFlow基础知识
x1、x2 表示输入,w1、w2 分别是 x1 到 y 和 x2 到 y 的权重,y=x1w1+x2w2。
foochane
2019/10/14
7850
TensorFlow基础知识
深入理解推荐系统:阿里DIN原理与实践
文章首先介绍了现有的点击率 (CTR) 预估模型大都满足相同的模式: 先将大量的稀疏类别特征 (Categorical Features) 通过 Embedding 技术映射到低维空间, 再将这些特征的低维表达按照特征的类别进行组合与变换 (文中采用 in a group-wise manner 来描述), 以形成固定长度的向量 (比如常用的 sum pooling / mean pooling), 最后将这些向量 concatenate 起来输入到一个 MLP (Multi-Layer Perceptron) 中, 从而学习这些特征间的非线性关系.
Coggle数据科学
2022/08/31
6960
深入理解推荐系统:阿里DIN原理与实践
小白学PyTorch | 10 pytorch常见运算详解
这一课主要是讲解PyTorch中的一些运算,加减乘除这些,当然还有矩阵的乘法这些。这一课内容不多,作为一个知识储备。在后续的内容中,有用PyTorch来获取EfficientNet预训练模型以及一个猫狗分类的实战任务教学,EfficientNet是13课,猫狗分类是14课,11课是MobileNet详解和PyTorch代码解析,12课是SENet详解和PyTorch代码解析(因为EfficientNet是基于这两个网络构成的)。再往后我计划整理一些这两年比较优秀的论文和代码,一些提升准确率的有效的技巧等,当然PyTorch的各种优化器我还没有细讲(不过一般都是SGDM了)。
机器学习炼丹术
2020/09/22
1.1K0
推荐系统遇上深度学习(十八)--探秘阿里之深度兴趣网络(DIN)浅析及实现
阿里近几年公开的推荐领域算法有许多,既有传统领域的探索如MLR算法,还有深度学习领域的探索如entire -space multi-task model,Deep Interest Network等,同时跟清华大学合作展开了强化学习领域的探索,提出了MARDPG算法。
石晓文
2018/07/25
2.9K0
推荐系统遇上深度学习(十八)--探秘阿里之深度兴趣网络(DIN)浅析及实现
TensorFlow 入门
---- CS224d-Day 2: 在 Day 1 里,先了解了一下 NLP 和 DP 的主要概念,对它们有了一个大体的印象,用向量去表示研究对象,用神经网络去学习,用 TensorFlow 去训练模型,基本的模型和算法包括 word2vec,softmax,RNN,LSTM,GRU,CNN,大型数据的 seq2seq,还有未来比较火热的研究方向 DMN,还有模型的调优。 今天先不直接进入理论学习,而是先学习一下 TensorFlow,在原课程里,这部分在第7讲,但是我觉得最高效地学习算法的方式,就是一边
杨熹
2018/04/02
1.5K0
TensorFlow 入门
相关推荐
[阿里DIN]从模型源码梳理TensorFlow的形状相关操作
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验