0

刚刚接触到每个人似乎都在谈论的这个 GPUImage 框架。

无论如何,我正在尝试做一个过滤器链 - 前两个过滤器在链接在一起时会产生预期的结果,但是当我添加第三个时,整个图像被设置为 0 alpha

我的代码:

-(UIImage*)doFilter:(int)aVal{

GPUImagePicture *stillImageSource = [[GPUImagePicture alloc] initWithImage:self];
GPUImageLuminanceThresholdFilter *lumFilterOne = [[GPUImageLuminanceThresholdFilter alloc] init];
lumFilterOne.threshold = (float)aVal/255;

GPUImageFalseColorFilter *colorAFilter = [[GPUImageFalseColorFilter alloc] init];
colorAFilter.firstColor = (GPUVector4){0.5f, 0.5f, 0.5f, 1.0f};
colorAFilter.secondColor = (GPUVector4){1.0f, 1.0f, 1.0f, 1.0f};

GPUImageChromaKeyFilter *chromaFilter = [[GPUImageChromaKeyFilter alloc] init];
[chromaFilter setColorToReplaceRed:1.0f green:1.0f blue:1.0f];
chromaFilter.thresholdSensitivity = 0.0f;


[stillImageSource addTarget:lumFilterOne];
[stillImageSource processImage];

[lumFilterOne addTarget:colorAFilter];
[stillImageSource processImage];

[colorAFilter addTarget:chromaFilter];
[stillImageSource processImage];




return [chromaFilter imageFromCurrentlyProcessedOutput];
}

正如我上面所说,当我更换这个

[colorAFilter addTarget:chromaFilter];
[stillImageSource processImage];




return [chromaFilter imageFromCurrentlyProcessedOutput];

用这个(移除色度键过滤器)

return [colorAFilter imageFromCurrentlyProcessedOutput];

我得到了预期的结果 - 输入图像阈值化为所选阈值,生成的黑色区域变为灰色,白色保持白色。

一旦我引入 ChromaKey 滤镜,整个图像就会被抠出。

我希望只把白色调出来。

任何帮助表示赞赏

4

1 回答 1

0

我从来没有弄清楚这一点,但我正在回答我自己的问题,因为我最终只是编写了自己的着色器来完成我需要的一切。干杯。

于 2012-09-28T20:15:17.030 回答