-1

RGBA 値に基づいてカラー フィルターを作成する必要があります。Core Image または Metal Performance Shaders のどちらでも構いません。いくつかのデフォルト フィルタを提供するコア イメージ。しかし、RGBA カラー コードのフィルターが必要です。そのようなフィルタを作成することは可能ですか?

これを試してみましたが、期待した結果ではありません。色違いのセピアトーンフィルターのようなものを期待しています。(フィルターはフレーム全体に適用する必要があります)

@interface CustomFilterByColor : CIFilter

@property(nonatomic, retain) CIImage *inputImage;

@end



#import "CustomFilterByColor.h"

@implementation CustomFilterByColor

-(CIColorKernel*)kernel
{
    static CIColorKernel *kernel = nil;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        kernel = [CIColorKernel kernelWithString:
                  @"kernel vec4 CustomFilter1 ( __sample s ) \
                  \n { \n if ( s.r + s.g + s.b < 0.1 ) \n \
                  { return s.rgba = vec4(1.0, 1.0, 0.0, 0.5); } \
                  \n else \n { return s.rgba; } \n }"];

    });

    return kernel;
}

-(CIImage*)outputImage
{
    return [[self kernel] applyWithExtent:_inputImage.extent arguments:@[_inputImage]];
}

それは私のために働いています。このような結果画像を取得する

ここに画像の説明を入力

しかし、これは期待されるフィルターではありません。カラーフィルターだけを期待しています。お気に入り

ここに画像の説明を入力

あなたが私の主張を理解してくれることを願っています。

4

1 に答える 1