ios - 如何从 iOS 上的照片输出中检索 AVCameraCalibrationData?

标签 ios objective-c camera camera-calibration

我想检索与我在 iOS 设备上拍摄的照片相关的镜头畸变系数(注意:不是焦距也不是主点)。据我了解,在 iOS 设备上执行此操作的唯一方法是使用 AVCameraCalibrationDataofficial documentation仅提供有关如何从 AVDepthData 检索相机校准数据的信息,但文档和 this StackOverflow answer这意味着 AVCameraCalibrationData 可以用于图像,而不仅仅是深度数据。

在拍摄图像时是否可以检索 AVCameraCalibrationData 信息?如果是这样,是否有关于此功能的文档?

最佳答案

背景:当被问及相机校准时,很多这些堆栈溢出响应都引用了内部数据,但校准数据通常包括内部数据、外部数据、镜头畸变等。所有这些都列出了 here in the iOS documentation you linked to .

我假设您已准备好通用相机应用程序代码。在该代码中,当拍摄照片时,您可能会调用 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.

基本上是您链接到的以及我再次链接到的文档中列出的所有内容。

还有一点需要注意,如果您只是在寻找内在矩阵,那么它比其他这些值更容易获得(即环境不那么严格)through the approach outlined in the the stack overflow .如果你将它用于计算机视觉,这就是我正在使用它的目的,那么有时这就是所需要的。但对于真正酷的东西,你会想要的。

关于ios - 如何从 iOS 上的照片输出中检索 AVCameraCalibrationData?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54846680/

相关文章:

最小化后android相机工作

ios - 如何使用 Box V2 iOS SDK 注销用户

ios - 为 ipad 创建垂直选项卡栏

ios - OCMockito stub 单例共享实例方法

objective-c - 将 NSString 减少为小写、ascii 字母字符

android - 居中裁剪图像以适当的尺寸设置在 ImageView 上

ios - UIImagePickerController overlayview在预览中倒置

ios - Google map 服务条款对 iOS 应用程序开发人员在实践中意味着什么?

ios - iOS 调整中的链接跳板

javascript - Titanium iPhone Mapview 不显示来自引脚注释的标题或副标题