问题描述
我有这个:
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 应该已经根据其元数据正确定位图像。