ARKit
开发一个项目,尝试对检测到的平面上的一张纸进行透视校正,以便将其输入到期望从正上方拍摄图像的 CoreML
模型中。
ARKit
给出了设备相对于平面的方向(ARCamera.transform
、ARCamera.eulerAngles
和 ARCamera.projectionMatrix
都看起来很有前途)。因此,我知道相机的方向(而且我知道平面是水平的,因为这是目前
ARKit
检测到的所有内容),但我无法确定如何创建一个执行正确透视校正的 GLKMatrix4
。最初,我认为只需要通过
ARCamera.projectionMatrix
的逆变换即可实现,但这似乎根本不起作用;我不太确定该矩阵在描述什么..它似乎不会随着设备方向的改变而改变。我尝试使用
GLKMatrix4Rotate
和滚动/俯仰/偏航来创建自己的矩阵,但那没用...我甚至无法通过单个旋转轴使其工作。我找到了
GLKMatrix4MakePerspective
、GLKMatrix4MakeOrtho
和GLKMatrix4MakeFrustum
,它们似乎可以进行透视变换,但我无法弄清如何将我拥有的信息转换为这些函数的输入,以进行正确的透视变换。编辑: 为了更好地解释我的尝试,我使用Photoshop中的
Perspective Warp
工具转换了一个示例图像;我想知道如何得到一个矩阵,可以给定我对场景的信息执行类似的变换。
CIPerspectiveCorrection
进行无裁剪的变换?不介意的话,能分享一下你的代码吗? - enigrify