目录
零基础 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 , 视觉效果相关.
GPUImageLuminosity 属于 GPUImage 颜色处理相关,用来处理图片亮度平均,像 [GPUImageAverageColor](https://www.codersrc.com/archives/15617.html) 一样,将图像缩小到其平均亮度。
/******************************************************************************************/
//@Author:猿说编程
//@Blog(个人博客地址): www.codersrc.com
//@File:GPUImage – 亮度平均 GPUImageLuminosity
//@Time:2022/03/25 07:30
//@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
/******************************************************************************************/
#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE
NSString *const kGPUImageInitialLuminosityFragmentShaderString = SHADER_STRING
(
precision highp float;
uniform sampler2D inputImageTexture;
varying highp vec2 outputTextureCoordinate;
varying highp vec2 upperLeftInputTextureCoordinate;
varying highp vec2 upperRightInputTextureCoordinate;
varying highp vec2 lowerLeftInputTextureCoordinate;
varying highp vec2 lowerRightInputTextureCoordinate;
const highp vec3 W = vec3(0.2125, 0.7154, 0.0721);
void main()
{
highp float upperLeftLuminance = dot(texture2D(inputImageTexture, upperLeftInputTextureCoordinate).rgb, W);
highp float upperRightLuminance = dot(texture2D(inputImageTexture, upperRightInputTextureCoordinate).rgb, W);
highp float lowerLeftLuminance = dot(texture2D(inputImageTexture, lowerLeftInputTextureCoordinate).rgb, W);
highp float lowerRightLuminance = dot(texture2D(inputImageTexture, lowerRightInputTextureCoordinate).rgb, W);
highp float luminosity = 0.25 * (upperLeftLuminance + upperRightLuminance + lowerLeftLuminance + lowerRightLuminance);
gl_FragColor = vec4(luminosity, luminosity, luminosity, 1.0);
}
);
NSString *const kGPUImageLuminosityFragmentShaderString = SHADER_STRING
(
precision highp float;
uniform sampler2D inputImageTexture;
varying highp vec2 outputTextureCoordinate;
varying highp vec2 upperLeftInputTextureCoordinate;
varying highp vec2 upperRightInputTextureCoordinate;
varying highp vec2 lowerLeftInputTextureCoordinate;
varying highp vec2 lowerRightInputTextureCoordinate;
void main()
{
highp float upperLeftLuminance = texture2D(inputImageTexture, upperLeftInputTextureCoordinate).r;
highp float upperRightLuminance = texture2D(inputImageTexture, upperRightInputTextureCoordinate).r;
highp float lowerLeftLuminance = texture2D(inputImageTexture, lowerLeftInputTextureCoordinate).r;
highp float lowerRightLuminance = texture2D(inputImageTexture, lowerRightInputTextureCoordinate).r;
highp float luminosity = 0.25 * (upperLeftLuminance + upperRightLuminance + lowerLeftLuminance + lowerRightLuminance);
gl_FragColor = vec4(luminosity, luminosity, luminosity, 1.0);
}
);
#else
NSString *const kGPUImageInitialLuminosityFragmentShaderString = SHADER_STRING
(
uniform sampler2D inputImageTexture;
varying vec2 outputTextureCoordinate;
varying vec2 upperLeftInputTextureCoordinate;
varying vec2 upperRightInputTextureCoordinate;
varying vec2 lowerLeftInputTextureCoordinate;
varying vec2 lowerRightInputTextureCoordinate;
const vec3 W = vec3(0.2125, 0.7154, 0.0721);
void main()
{
float upperLeftLuminance = dot(texture2D(inputImageTexture, upperLeftInputTextureCoordinate).rgb, W);
float upperRightLuminance = dot(texture2D(inputImageTexture, upperRightInputTextureCoordinate).rgb, W);
float lowerLeftLuminance = dot(texture2D(inputImageTexture, lowerLeftInputTextureCoordinate).rgb, W);
float lowerRightLuminance = dot(texture2D(inputImageTexture, lowerRightInputTextureCoordinate).rgb, W);
float luminosity = 0.25 * (upperLeftLuminance + upperRightLuminance + lowerLeftLuminance + lowerRightLuminance);
gl_FragColor = vec4(luminosity, luminosity, luminosity, 1.0);
}
);
NSString *const kGPUImageLuminosityFragmentShaderString = SHADER_STRING
(
uniform sampler2D inputImageTexture;
varying vec2 outputTextureCoordinate;
varying vec2 upperLeftInputTextureCoordinate;
varying vec2 upperRightInputTextureCoordinate;
varying vec2 lowerLeftInputTextureCoordinate;
varying vec2 lowerRightInputTextureCoordinate;
void main()
{
float upperLeftLuminance = texture2D(inputImageTexture, upperLeftInputTextureCoordinate).r;
float upperRightLuminance = texture2D(inputImageTexture, upperRightInputTextureCoordinate).r;
float lowerLeftLuminance = texture2D(inputImageTexture, lowerLeftInputTextureCoordinate).r;
float lowerRightLuminance = texture2D(inputImageTexture, lowerRightInputTextureCoordinate).r;
float luminosity = 0.25 * (upperLeftLuminance + upperRightLuminance + lowerLeftLuminance + lowerRightLuminance);
gl_FragColor = vec4(luminosity, luminosity, luminosity, 1.0);
}
);
#endif
本文由博客 - 猿说编程 猿说编程 发布!
光度学中的能量、通量、出度、照度、强度、亮度参数及其联系光度学中评价光的强弱有两种方式,一种是将光作为电磁波,考察其辐射的能量;另一种是以人眼视觉体验来评价光的强弱。前者被称为辐射量,后者被称为光学量。辐射量包括辐射能、辐通量、辐出量、辐照度、辐强度、辐亮度参数,与之相对应,光学量包括光能量、光通量、光出量、光照度、光强度、光亮度参数。通过该文章的阅读,读者还能掌握光学中的几个单位:流明,勒克斯,坎德拉,尼特的意义以及他们之间的关系。辐射量1.辐射能光以电磁波形式发射、传输或接收的能量。单位:焦耳。2.辐通量单位时间发射、传输和接收的辐射能。单位:瓦特。3.辐出度单位面积的辐射源辐射出的辐通量
有没有一种简单的方法可以获取集合中某个属性的平均值?例如,每个用户都有一个分数。给定一组用户(@users),您如何获得该组的平均分?有没有类似@users.average(:score)的东西?我想我在数据库字段中遇到过类似的东西,但我需要它来处理集合...... 最佳答案 对于你的问题,实际上可以这样做:@users.collect(&:score).sum.to_f/@users.lengthif@users.length>0早些时候我认为,@users.collect(&:score).average会起作用。对于数据库字段
假设我有一个这样的数组:[{"player_id"=>1,"number_of_matches"=>2,"goals"=>5},{"player_id"=>2,"number_of_matches"=>4,"goals"=>10}]我想要所有球员每场比赛的平均进球数,不是每个球员的平均进球数,而是总平均进球数。我想用.each来做这件事并存储每个单独的平均值,最后将它们全部相加并除以我拥有的玩家数量。但是,我正在寻找一种Ruby/单行方式来执行此操作。 最佳答案 根据要求,一行:avg=xs.map{|x|x["goals"].to
我有一个猜测表,每个猜测中只有一个日期。我想知道如何将两个或多个日期转换为平均值。类似这样的事情,但显然Ruby不会让我划分两个日期。 最佳答案 Date有点难用,你应该用Time。尝试将日期转换为时间:require'time'foo_time=Time.parse(foo.to_s)bar_time=Time.parse(bar.to_s)将它们转换为时间戳,然后计算平均值,然后转换回时间:avg=Time.at((foo_time.to_f+bar_time.to_f)/2)您可以将其转换回日期:avg_date=Date.p
当我将图像上传到我的RubyonRails应用程序时,我需要知道图像的平均颜色。是否可以获取HEX或RGB的平均颜色值,以便稍后在将要显示此图像的View中使用此颜色?类似于:img=Magick::Image.read(path).firsthexVal=img.getHexValue 最佳答案 将图像调整为一个像素并获取其颜色?img=Magick::Image.read(path).firstpix=img.scale(1,1)averageColor=pix.pixel_color(0,0)
我正在用Ruby创建一个箱线图生成器,我需要计算一些东西。假设我有这个数组:arr=[1,5,7,2,53,65,24]如何从上述数组中找到最低值(1)、最高值(65)、总计(157)、平均值(22.43)和中位数(7)?谢谢 最佳答案 lowest=arr.minhighest=arr.maxtotal=arr.inject(:+)len=arr.lengthaverage=total.to_f/len#to_fsowedon'tgetanintegerresultsorted=arr.sortmedian=len%2==1?so
如何从数组中找到平均值?如果我有数组:[0,4,8,2,5,0,2,6]平均会得到3.375。 最佳答案 试试这个:arr=[5,6,7,8]arr.inject{|sum,el|sum+el}.to_f/arr.size=>6.5注意.to_f,您需要它来避免整数除法的任何问题。您还可以:arr=[5,6,7,8]arr.inject(0.0){|sum,el|sum+el}/arr.size=>6.5您可以按照另一位评论者的建议将其定义为Array的一部分,但您需要避免整数除法,否则您的结果将是错误的。此外,这通常并不适用于所有
这是我的第一篇文章。我正在编写一个程序来从四个输入框获取输入,找出这四个输入框的总和并求出平均值。当我这样做时,我得到一个NaN错误,有人可以指出我哪里出错了。谢谢Averagemarksfunctionaverage(form){scores=newArray(4)scores[0]=form.mark1.valuescores[0]=newNumber(scores[0])scores[1]=form.mark2.valuescores[1]=newNumber(scores[1])scores[2]=form.mark3.valuescores[2]=newNumber(scor
我有一个这样的数组:vararray=[{name:"a",value:1},{name:"a",value:2},{name:"a",value:3},{name:"b",value:0},{name:"b",value:1}];我需要这样的数组:varnewarray=[{name:"a",value:2},{name:"b",value:0.5}]新数组将每个唯一名称作为具有平均值的对象。有没有简单的方法可以做到这一点? 最佳答案 您必须遍历数组,计算每个对象的总和和计数。这是一个快速实现:functionaverage(ar
我有以下查询,从中获取数据并创建过去每个小时的聚合:query={"query":{"bool":{"must":[{"term":{"deviceId":device}},{"match":{"eventType":"Connected"}}],"must_not":[{"query_string":{"query":"Pong","fields":["data.message"]}},]},},"size":0,"sort":[{"timestamp":{"order":"desc"}}],"aggs":{"time_buckets":{"date_histogram":{"fie