我想在我的應用程序中對圖像應用濾鏡效果。 我是新的Open GL &想申請棕褐色,RGB,GrayScale效果圖像在我的應用程序。 我有實現亮度,對比度,飽和度效果,但無法在灰度上找到任何解決方案,RGB &棕褐色效果。對UIImage應用棕褐色,RGB,GrayScale效果
在此先感謝。
我想在我的應用程序中對圖像應用濾鏡效果。 我是新的Open GL &想申請棕褐色,RGB,GrayScale效果圖像在我的應用程序。 我有實現亮度,對比度,飽和度效果,但無法在灰度上找到任何解決方案,RGB &棕褐色效果。對UIImage應用棕褐色,RGB,GrayScale效果
在此先感謝。
您不指定是否要在OpenGL ES 1.1或2.0中執行此操作,因此我將假定您指的是較新的2.0。如果1.1的確是你的目標,那麼你需要玩混合模式,比如蘋果在GLImageProcessing example。
對於OpenGL ES 2.0,可以使用片段着色器來實現上述每種效果。對於圖像的灰度版本,你可以使用下面的片段着色器只提取亮度:
precision highp float;
varying vec2 textureCoordinate;
uniform sampler2D inputImageTexture;
const highp vec3 W = vec3(0.2125, 0.7154, 0.0721);
void main()
{
float luminance = dot(texture2D(inputImageTexture, textureCoordinate).rgb, W);
gl_FragColor = vec4(vec3(luminance), 1.0);
}
對於一個棕褐色色調,你可以使用顏色矩陣處理着色器我證明this answer:
varying highp vec2 textureCoordinate;
uniform sampler2D inputImageTexture;
uniform lowp mat4 colorMatrix;
uniform lowp float intensity;
void main()
{
lowp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate);
lowp vec4 outputColor = textureColor * colorMatrix;
gl_FragColor = (intensity * outputColor) + ((1.0 - intensity) * textureColor);
}
與
self.colorMatrix = (GPUMatrix4x4){
{0.3588, 0.7044, 0.1368, 0},
{0.2990, 0.5870, 0.1140, 0},
{0.2392, 0.4696, 0.0912 ,0},
{0,0,0,0},
};
矩陣我不知道你的意思是什麼「RGB的效果。」也許你的意思是顏色矩陣的操縱,在這種情況下,上述情況也適用於你。
所有這些都是我的開源GPUImage框架內內置過濾器(見GPUImageBrightnessFilter,GPUImageContrastFilter,GPUImageSaturationFilter,GPUImageSepiaFilter和GPUImageColorMatrixFilter)。如果您真的是OpenGL ES的新手,那麼您將需要相當多的代碼來設置場景,將UIImage作爲紋理拉入,運行頂點和片段着色器,檢索該圖像並將其保存作爲UIImage退出。 GPUImage將爲您完成所有這些工作,只需幾行Objective-C代碼。
看看http://stackoverflow.com/questions/3549396/image-processing-glamour-filter-in-iphone – janusbalatbat 2012-03-14 10:57:19
@niks你能提供代碼的亮度,對比度和飽和度 – Nassif 2013-11-06 05:15:00