4

GPUImageこんにちは、ブラッドラーソンのSDKを使用して写真にスケッチ効果を試してみたいと思いiOSます。このようなスケッチ効果を作成しようとしています

ここに画像の説明を入力してください

しかし、私が得るスケッチ効果はこのようなものです

ここに画像の説明を入力してください

この効果を作成するためにGPUImageSketchFilterを使用しています。この効果を実現するために提供するパラメーターは次のとおりです。

setTexelHeight:(1.12 / 480.0)
setTexelWidth:(0.5 / 320.0) 

この効果を実現する方法を教えてください。

ブラッドはあなたの提案に従って行きます、私はこれを持っています...

ここに画像の説明を入力してください

私の目的:右の画像を左の画像のように見せるために必要です..plsは私を提案します.. !!

4

2 に答える 2

0

より良いスケッチ エフェクト コードを見たことがありますが、フィルターが苦手で、GPUImage にカスタム フィルターを記述してこれを適用することはできません。

float res = iResolution.x;
float n0 = 97.0 / res;
float n1 = 15.0 / res;
float n2 = 97.0 / res;
float n3 = 9.7 / res;
float total = n2 + ( 4.0 * n0 ) + ( 4.0 * n1 );

const vec3 div3 = vec3(1.0 / 3.0);

void main(void) {
  float offset, temp1, temp2;
    vec4 m, p0, p1, p2, p3, p4, p5, p6, p7, p8;
    offset = n3;

    p0=texture2D(iCamera,iScreen);
    p1=texture2D(iCamera,iScreen+vec2(-offset,-offset));
    p2=texture2D(iCamera,iScreen+vec2( offset,-offset));
    p3=texture2D(iCamera,iScreen+vec2( offset, offset));
    p4=texture2D(iCamera,iScreen+vec2(-offset, offset));

    offset=n3*2.0;

    p5=texture2D(iCamera,iScreen+vec2(-offset,-offset));
    p6=texture2D(iCamera,iScreen+vec2( offset,-offset));
    p7=texture2D(iCamera,iScreen+vec2( offset, offset));
    p8=texture2D(iCamera,iScreen+vec2(-offset, offset));
    m = (p0 * n2 + (p1 + p2 + p3 + p4) * n0 + (p5 + p6 + p7 + p8) * n1) / total;

    //convert to b/w
    temp1 = dot(p0.rgb, div3);
    temp2 = dot(m.rgb, div3);

    //color dodge blend mode
    if (temp2 <= 0.0005) {
        gl_FragColor = vec4( 1.0, 1.0, 1.0, p0.a);
    } else {
        gl_FragColor = vec4( vec3(min(temp1 / temp2, 1.0)), p0.a);
    }
}
于 2015-01-07T03:45:11.703 に答える