ios - Swift 中的卷积 CIFilter

标签 ios swift cifilter

我的卷积过滤器无法处理我在屏幕上显示的实时视频预览。将滤镜更改为棕褐色滤镜可以正确显示,但将其更改为 CIConvolution3X3 会失败。

let weights:[CGFloat] = [1, 0, -1, 2, 0, -2, 1, 0, -1]
result = (CIFilter(name: "CIConvolution3X3", withInputParameters: [
    kCIInputImageKey: result,
    kCIInputWeightsKey: CIVector(values: weights, count: 9),
    kCIInputBiasKey: NSNumber(float: 0.5)
])?.outputImage)!

最佳答案

我遇到了同样的问题!上下文略有不同,我试图转换结果 CIImageCIConvolution3X3 过滤进入 UIImage .这在运行时失败并显示出与上述相同的症状。 (将 inputBias 键设置为除 0 以外的任何值都会导致崩溃)失败的确切行是 self.imageView.image = UIImage(ciImage: ciImage) .

我确实找到了解决方案。关键是使用 CIContext 转换图像:

let context = CIContext(options: nil)
guard let cgImage = context.createCGImage(ciImage, from: rectangle) else { return }
let uiImage = UIImage(cgImage: cgImage)

希望对你有帮助😃

关于ios - Swift 中的卷积 CIFilter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38820933/

相关文章:

ios - 关联的枚举类型实现 CaseItratable

ios - Core Image Filters 将曲线分别应用于每个 RGB channel

objective-c - 更改 CIFilter 的工作色彩空间

ios - 机器人 Xcode 9 出错

ios - Alamofire 出现 kCFStreamErrorDomainSSL 错误

ios - UISearchController 不会向上移动我的 UITableView

macos - CIImageAccumulator 的作用是什么?

ios - 将事件从 (UITableViewCell->UIScrollView) 传递给拥有的 UITableView

ios - 推送到另一个 View Controller 时发生随机崩溃

ios - dismissViewControllerAnimated 导致空屏幕