Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/96.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios AVCaptureDevice的精确当前视野_Ios_Swift_Camera_Scenekit_Fieldofview - Fatal编程技术网

Ios AVCaptureDevice的精确当前视野

Ios AVCaptureDevice的精确当前视野,ios,swift,camera,scenekit,fieldofview,Ios,Swift,Camera,Scenekit,Fieldofview,从AVFoundation对象,如AVCaptureDevice我可以使用 captureDevice.activeFormat.videoFieldOfView 在iphone6s上,这个值约为58度。但我需要的是在运行AVCaptureSession时,获取当前帧中显示的实际fieldOfView的当前值。我的意思是,当镜头移动以获得聚焦图像时,从activeFormat读取的值并不反映真实的fieldOfView。例如,当我将相机指向远处的物体时,镜头会移动以保持焦距,fieldOfVi

AVFoundation
对象,如
AVCaptureDevice
我可以使用

captureDevice.activeFormat.videoFieldOfView
在iphone6s上,这个值约为58度。但我需要的是在运行
AVCaptureSession
时,获取当前帧中显示的实际
fieldOfView
的当前值。我的意思是,当镜头移动以获得聚焦图像时,从
activeFormat
读取的值并不反映真实的
fieldOfView
。例如,当我将相机指向远处的物体时,镜头会移动以保持焦距,
fieldOfView
会略微增加,大约为61度。您可以在
ARKit
camera中观察到这种行为-即使当摄影机捕捉到焦点时,显示的对象也会随着摄影机预览而变得越来越大,越来越小。我想知道如何实现这种行为并将视野调整到当前镜头位置。我需要将此应用于
SceneKit
camera

快捷方式:如何在考虑当前焦点位置(或镜头位置)的情况下找到相机的当前精确视野

要帮助理解我的意思,请查看以下gif:


一开始你可以看到它聚焦,视频有点像放大/缩小,以捕捉正确的镜头位置。因此,当这个镜头移动时,实际可见的
视野变得有点不同。

我能想到的最接近解决这个问题的值是
AVCaptureDevice.lensPosition
。当锐化图像以获得聚焦时,该值从0.0变为1.0。但从0到1的值并没有给我足够的信息,我不知道这到底是如何影响Fieldof View的。还有其他的值可以用来计算吗?除了你已经发现的,我找不到任何苹果API。这是小提示。为了更新
lensPosition
fieldOfView
值,您可以附加
CADisplayLink
。但无论怎样,当镜头位置或变焦改变时,
fieldOfView
似乎并没有什么区别,所以我想你们应该在网上找到合适的公式(谢谢你的评论。我已经使用了显示链接,所以是的,这是我计算这个的地方,但是我在任何地方都找不到公式。我认为我不能在网上找到任何公式,因为我拥有的这些值是不够的。如果lensPosition的单位是mm,那可能是,但它只是0到1之间的任意值。我甚至发送了一个tsi到苹果,但到目前为止还没有回应。我正在考虑用手测量图像的最大视场,然后用镜头位置来增加与报告的视场乘以镜头位置的差异。这可能会起作用,但不会非常准确,对其他设备也不一样。我刚刚收到苹果的回应,确认这是不可能的公共api。我只能使用硬编码估计。他们建议我在未来的版本中填写一个请求来实现这一点。好的,我已经实现了一个解决方案,正如我之前所说的那样-我使用ARKit测量了镜头位置为0和1时相机的实际视场。对于iPhone 6s的这些值,实际视场可以与返回的视野不同,介于-0.24167252..<3.3269768之间。这很好用,我使用真实物体测量,并应用它们的大小和距离,结果很好。是否有其他方法可以获得其他设备的这些值,而无需从ARKit手动测量?我需要用v的值填充字典各种各样的装置。