如何使用 CIFaceBalance 过滤器?

问题描述

我有这个:

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")

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

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

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

解决方法

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

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