有没有办法通过调用 API 来找出或计算 iPhone 相机的视野 (FOV)?还是您必须亲自亲自动手才能找到它?
如果无法使用 API 获取或计算它,而是必须将其硬编码到应用程序中,那么找出应用程序运行在哪种设备上的最佳方法是什么?不同的设备有不同的 FOV(iPhone 4 的 FOV 比以前的版本大。)另外,每个设备的 FOV 到底有多大?
我问是因为我正在考虑制作一个增强现实应用程序,并且知道 FOV 是必不可少的。
有没有办法通过调用 API 来找出或计算 iPhone 相机的视野 (FOV)?还是您必须亲自亲自动手才能找到它?
如果无法使用 API 获取或计算它,而是必须将其硬编码到应用程序中,那么找出应用程序运行在哪种设备上的最佳方法是什么?不同的设备有不同的 FOV(iPhone 4 的 FOV 比以前的版本大。)另外,每个设备的 FOV 到底有多大?
我问是因为我正在考虑制作一个增强现实应用程序,并且知道 FOV 是必不可少的。
我拍了一张我从远处测量过的纸的照片。然后我查看了这张纸的大小与其在照片中的图像的比例。
我的值是 56 厘米,您可以完全拍摄(即它完全占据屏幕尺寸)大约 40 厘米 x 60 厘米的物体
使用它我做了一些简单的触发并到达:垂直FOV:2 * atan(58.5 / 2 / 56.5)->〜55度水平FOV:2 * atan(21.5 / 2 / 56.5)-> 42度
这个答案使用一些数学和相机信息来确定一个值。
看看ARKit,它硬编码了 0.7392 弧度(42.35 度)。当我研究 AR 时,我只是举起手机摄像头,用一些地标对齐边缘,然后测量角度。我对 3GS 的估计是横向 48 度和纵向 39 度。我对 iPhone 4 的估计是横向 58 度和纵向 48 度。
在互联网上搜索似乎有各种各样的说法。这可能是因为人们拥有不同型号的手机。我没有从苹果那里找到有关此主题的官方信息来源。
如果我要再次这样做,我会借用各种手机型号并使用一个系统来测量地平线上的地标。没有什么能比你自己测量的硬数字更胜一筹。
我的估计方法如下:站在离墙 10 英尺的地方,看屏幕上的图像。注意图像左右两侧墙上的点并测量距离。然后用三角法计算角度。如果 a 是与墙壁的距离,o 是沿墙壁测量的长度,则 tan(A) = (o/2)/a,即角度的一半。
更新:我修正了一些不正确的计算并添加了 iPhone 4 和我的测量方式。
我在 iPhone 3gs 上的长尺寸为 47.1539 度。
你可以简单地问:
AVCaptureDevice *device = [...]
NSLog(@"FOV: %lf", device.activeFormat.videoFieldOfView);
请记住,这是水平 FOV,现在,对于新手来说,您拥有 ARKit。