我的卷积过滤器无法处理我在屏幕上显示的实时视频预览。将滤镜更改为棕褐色滤镜可以正确显示,但将其更改为 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)!
最佳答案
我遇到了同样的问题!上下文略有不同,我试图转换结果 CIImage
用 CIConvolution3X3
过滤进入 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/