Код: Выделить всё
if let image = UIImage(named: "demo9"), let editted = applyPersonFilter(to: image) {
imageView.image = editted
}
func applyPersonFilter(to image: UIImage) -> UIImage? {
guard let ciImage = CIImage(image: image) else { return nil }
let context = CIContext(options: nil)
let filter = CIFilter(name: "CIPersonSegmentation", parameters: [
kCIInputImageKey: ciImage,
"inputQualityLevel": 1.0
])
guard let outputImage = filter?.outputImage else {
return nil
}
print("outputImage: \(outputImage.extent)")
guard let cgImage = context.createCGImage(outputImage, from: outputImage.extent) else { return nil }
return UIImage(cgImage: cgImage)
}
Код: Выделить всё
Thread 1: EXC_BAD_ACCESS (code=EXC_I386_GPFLT)ПРИМЕЧАНИЕ, что Печать перед контекстом. 384.0) .
Если я заменяю «циперссогментацию» с некоторым другим именем фильтра, то он работает нормально. Я запускал приведенный выше код на симуляторе, когда он сбои. Затем я наткнулся на эту статью при исследовании некоторого другого редактирования изображений:
https://www.artemnovichkov.com/blog/rem ... tuiобразно Попробуйте запустить код на симуляторе iOS:
. Тем не менее, я подозревал, что Cipersonsementation также использует API Vision за кулисами. Следовательно, сбой на симуляторе.
Он отлично работает на устройстве.
Может ли кто -нибудь подтвердить мое подозрение?
Подробнее здесь: https://stackoverflow.com/questions/794 ... image-with
Мобильная версия