我正在尝试使用 GPUImageChromaKeyBlendFilter 在此图像中用纯黑色图像替换黑色/深灰色,但它似乎也在替换白色:
这是我的代码:
stillImageSource = [[GPUImagePicture alloc] initWithImage:[UIImage imageNamed:@"head.jpg"]];
blackImageSource = [[GPUImagePicture alloc] initWithImage:[UIImage imageNamed:@"black.jpg"]];
filter = [[GPUImageChromaKeyBlendFilter alloc] init];
[(GPUImageChromaKeyBlendFilter *)filter setColorToReplaceRed:0.27 green:1.0 blue:1.0];
[(GPUImageChromaKeyBlendFilter *)filter setThresholdSensitivity:self.myslider.value];
[stillImageSource addTarget:filter];
[blackImageSource addTarget:filter];
[filter addTarget:self.mygpuimageview];
[stillImageSource processImage];
[blackImageSource processImage];
我怎样才能使这项工作?
我注意到在这篇文章中,布拉德提到这个问题是由于消除了亮度:
https://github.com/BradLarson/GPUImage/issues/2256
“这与色度键控滤镜中的颜色匹配计算有关。它试图去除亮度分量,只匹配色度,因此对于白色或黑色,由于缺乏色度。你可以尝试深入研究色度键着色器,看看你可以改进那里的颜色匹配算法。
有没有办法在抠像时也考虑到亮度?一般来说,我对 GPUImage 和图像处理非常陌生,所以我什至不知道如何修改亮度代码。