IOS Core Filter Cipersonsementation создает маску, чья позиция отличается от оригинала. Как правильно позиционировать?IOS

Программируем под IOS
Ответить
Anonymous
 IOS Core Filter Cipersonsementation создает маску, чья позиция отличается от оригинала. Как правильно позиционировать?

Сообщение Anonymous »

У меня есть следующее изображение:

Я использую приведенный ниже код, чтобы создать красную маску из Cipersemanse и затем изменить код/код/код> и затем изменить код/код/код и затем изменить код/код/код/код. /> Предупреждение: Cipersonsementation требует физического устройства. Он использует Vision API, который, я считаю, не поддерживается на симуляторе.

Код: Выделить всё

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 }

print("ciImage: \(ciImage.extent)") // prints (0.0, 0.0, 2882.0, 1300.0)

let context = CIContext(options: nil)

let personMaskFilter = CIFilter(name: "CIPersonSegmentation", parameters: [
kCIInputImageKey: ciImage,
"inputQualityLevel": 0
])

let maskImage = personMaskFilter?.outputImage?.cropped(to: ciImage.extent) as? CIImage

print("maskImage: \(maskImage?.extent)") // prints (0.0, 0.0, 2016.0, 1300.0)

let solidColorFilter = CIFilter(name: "CIConstantColorGenerator")
solidColorFilter?.setValue(CIColor.cyan, forKey: kCIInputColorKey)

let blendFilter = CIFilter(name: "CIBlendWithRedMask", parameters: [kCIInputImageKey: ciImage, kCIInputBackgroundImageKey: solidColorFilter?.outputImage?.cropped(to: ciImage.extent) as Any, kCIInputMaskImageKey: maskImage as Any])

guard let outputImage = blendFilter?.outputImage else {
return nil
}

print("blendFilter: \(outputImage.extent)") // prints (0.0, 0.0, 2882.0, 1300.0)

guard let cgImage = context.createCGImage(outputImage, from: outputImage.extent) else { return nil }

return UIImage(cgImage: cgImage)
}
Вывод, который он создает, является следующим:

Как вы видите, позиция Mask не является правильной. Это связано с тем, что красная маска, созданная Cipersonsementation , имеет иной степени , чем исходное изображение.>

Подробнее здесь: https://stackoverflow.com/questions/794 ... -different
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»