Я хотел исказить изображение ( снимок ARSCNView ), используя значения, которые мы получаем в projectionMatrix или eulerAngles , или преобразовать свойства ARCamera. Или есть какой-либо другой способ искажать изображение, используя значения, которые мы получаем из ARKit? Я предполагаю, что projectionMatrix дает нам значения искажения перспективы.
Можем ли мы исказить это без выделения четырех точек? Любые указатели в правильном направлении будут очень полезны.
Вот одна из моих попыток с использованием значений projectionMatrix и eulerAngles:
func deskewImage(camera: ARCamera) {
let rotationZ = CGFloat(camera.eulerAngles.z)
var transform = CATransform3DIdentity
transform.m34 = CGFloat(camera.projectionMatrix.columns.2.z)
transform = CATransform3DRotate(transform, rotationZ, 0, 0, 1)
self.imageView.layer.transform = transform
}
Мне удалось отменить перекос изображения, используя CIPerspeciveCorrection , используя обнаружение прямоугольника (так же, как приложения CamScanner), но он отодвинул только обнаруженный прямоугольник и обрезал его. Я хочу, чтобы полное изображение было искажено, как показано в в этом примере без выбора четырех точек.
Я ищу подход с использованием ARKit, так как значения уже есть.