ios - 将过滤器应用于特定的图像分割遮罩
问题描述
我需要从图像中获取 Teeth SegmentationMatte,为其添加一些过滤器并将其保存到新图像或原始图像中。
这是我当前的代码:
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
if let pickedImage = info[UIImagePickerController.InfoKey.originalImage] as? UIImage {
pictureImageView.image = pickedImage
picture = pickedImage
if #available(iOS 13.0, *) {
let base = CIImage(cgImage: picture.cgImage!)
let maxcomp = CIFilter.maximumComponent()
maxcomp.inputImage = base
let makeup = maxcomp.outputImage
guard let pictureCgImage = picture.cgImage else { return }
let matte = CIImage(cgImage: pictureCgImage, options: [.auxiliarySemanticSegmentationTeethMatte : true,
.auxiliarySemanticSegmentationSkinMatte : false,
.auxiliarySemanticSegmentationHairMatte : false])
let blend = CIFilter.blendWithMask()
blend.backgroundImage = base
blend.inputImage = makeup
blend.maskImage = matte
let result = blend.outputImage
let context = CIContext()
guard let filteredImage = result,
let perceptualColorSpace = CGColorSpace(name: CGColorSpace.sRGB),
let imageData = context.heifRepresentation(of: filteredImage, format: .RGBA8, colorSpace: perceptualColorSpace, options: [.semanticSegmentationTeethMatteImage: filteredImage]) else { return }
let neededImage = CIImage(data: imageData) // our image with filtered teeth
}
}
dismiss(animated: true, completion: nil)
}
结果,我期望得到带有过滤牙齿的原始图像。但是我得到的图像是在整个图片中添加了一个过滤器,而不仅仅是牙齿的哑光。
解决方案
推荐阅读
- reporting-services - 用户已取消报告处理。(rsProcessingAborted)
- apache-kafka - 防止记录重复
- amazon-cloudformation - 如何通过 cloudformation 运行或测试我的 Lambda 函数
- c# - 使用 Groupby 将代码转换为更快的代码
- sql - 通过 SQL Server 中的 2 个表进行递归选择
- javascript - 函数未定义 store.getState()
- c++ - Assimp 加载顶点,但模型未显示
- python - Django:如何不返回所有模型字段
- ios - 在 PKAddPassesViewController 中点击取消获取操作
- php - 将代码 html 删除到 wordpress/woocommerce