刚刚接触到每个人似乎都在谈论的这个 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 滤镜,整个图像就会被抠出。
我希望只把白色调出来。
任何帮助表示赞赏