如何使用 CIFaceBalance 过滤器?

How to use the CIFaceBalance filter?

我知道了:

var faceBalanceFilter = CIFilter(name: "CIFaceBalance")!

faceBalanceFilter.setValue(inputImage, forKey: kCIInputImageKey)

faceBalanceFilter.setValue(NSNumber(value: origI), forKey: "inputOrigI")
faceBalanceFilter.setValue(NSNumber(value: origQ), forKey: "inputOrigQ")
faceBalanceFilter.setValue(NSNumber(value: strength), forKey: "inputStrength")
faceBalanceFilter.setValue(NSNumber(value: warmth), forKey: "inputWarmth")

当我修改这些参数时,情况确实发生了变化。由于整个图像发生了变化 tint/color(面部可能会多一些,但我不确定),我想知道是否就这些。

this related documentation 中,我了解到需要设置图像方向,但我还没有找到当您有一个单独的 CIFaceBalance 过滤器时应该如何完成。

另外,有谁知道 OrigI 和 OrigQ 参数的作用吗?

令人着迷! CIFaceBalance 实际上并未被系统列为“独立”过滤器。 (您可以使用 CIFilter.filterNames(inCategories: nil) 列出所有已注册的过滤器)。所以我猜它的目的是只使用系统设置参数的自动调整过滤器。这些参数也没有真正记录在其 attributes 字典中...

不过,好像可以单独初始化。文档中提到的“图像方向”只是意味着您应该确保图像中的人脸与图像的方向对齐(因此它们不应该在侧面或倒置)。
例如,如果需要,您可以使用 image.oriented(.right) 更改图像方向。但 Core Image 应该已经根据其元数据正确定位图像。