gpt4 book ai didi

ios - 如何在 iOS 上获取相机校准数据?又名 AVCameraCalibrationData

转载 作者:行者123 更新时间:2023-12-01 18:26:29 24 4
gpt4 key购买 nike

据我了解,AVCameraCalibrationData只能通过AVCaptureDepthDataOutput使用。这是正确的吗?

另一方面,AVCaptureDepthDataOutput 只能通过 iPhone X 前置摄像头或 iPhone Plus 后置摄像头访问,还是我弄错了?

我想要做的是获取 AVCaptureVideoDataOutput SampleBuffer 的 FOV。特别是,它应该与所选预设(全高清、照片等)相匹配。

最佳答案

背景:当被问及相机校准时,许多堆栈溢出响应都引用了内部数据,包括本文接受的答案,但校准数据通常包括内部数据、外部数据、镜头畸变等。所有这些都列出来了here in the iOS documentation 。作者提到他们只是在寻找 FOV,FOV 在样本缓冲区中,而不是在相机校准数据中。所以最终,我认为他的问题得到了解答。但是,如果您发现这个问题正在寻找实际的相机校准数据,这会让您失望。正如答案所说,您只能在特定条件下获得校准数据,我将在下面详细介绍。

在我回答其余问题之前,我只想说,如果您只是在寻找内在矩阵,那么这里接受的答案很好,它比其他矩阵更容易获得(即环境不那么严格)值through the approach outlined above 。如果您将其用于计算机视觉(这就是我使用它的目的),有时这就是所需要的。但对于真正酷的东西,你会想要这一切!因此,我将继续解释如何实现这一目标:

我假设您已经准备好通用相机应用程序代码。在该代码中,当拍摄照片时,您可能会调用 photoOutput 函数,如下所示:

func photoOutput(_ output: AVCapturePhotoOutput, didFinishProcessingPhoto photo: AVCapturePhoto, error: Error?) {...

输出参数将有一个值,您可以引用该值来查看是否支持相机校准,称为 isCameraCalibrationDataDeliverySupported ,例如,要打印出来,请使用如下内容:

print("isCameraCalibrationDataDeliverySupported: \(output.isCameraCalibrationDataDeliverySupported)")

请注意,我链接到的文档中,它仅在特定场景下受支持:

"This property's value can be true only when the isDualCameraDualPhotoDeliveryEnabled property is true. To enable camera calibration delivery, set the isCameraCalibrationDataDeliveryEnabled property in a photo settings object."

所以这一点很重要,请注意这一点,以避免不必要的压力。使用实际值进行调试并确保启用了正确的环境。

完成所有这些后,您应该从以下位置获取实际的相机校准数据:

photo.cameraCalibrationData

只需从该对象中取出即可获取您正在寻找的特定值,例如:

photo.cameraCalibrationData?.extrinsicMatrix
photo.cameraCalibrationData?.intrinsicMatrix
photo.cameraCalibrationData?.lensDistortionCenter
etc.

基本上是我上面链接到的文档中列出的所有内容。

关于ios - 如何在 iOS 上获取相机校准数据?又名 AVCameraCalibrationData,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48093509/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com