Справочная информация. Многие из этих ответов о переполнении стека ссылаются на внутренние данные, когда их спрашивают о калибровке камеры, но данные калибровки обычно включают в себя внутренние данные, внешние данные, искажения объектива и т. Д. Все это перечислено здесь, в документации iOSВы связались с .
Я предполагаю, что у вас есть общий код приложения камеры.В этом коде, когда снимок сделан, вы, вероятно, собираетесь вызвать функцию photoOutput, которая выглядит примерно так:
func photoOutput(_ output: AVCapturePhotoOutput, didFinishProcessingPhoto photo: AVCapturePhoto, error: Error?) {...
Выходной параметр будет иметь значение, на которое вы можете ссылатьсячтобы проверить, поддерживается ли калибровка камеры, называется isCameraCalibrationDataDeliverySupported , поэтому, например, чтобы распечатать это, используйте что-то вроде этого:
print("isCameraCalibrationDataDeliverySupported: \(output.isCameraCalibrationDataDeliverySupported)")
Обратите внимание, что в документации, на которую я ссылался, это толькоподдерживается в определенных сценариях:
"Значение этого свойства может быть истинным, только если свойство isDualCameraDualPhotoDeliveryEnabled имеет значение true. Чтобы включить доставку калибровки камеры, задайте свойство isCameraCalibrationDataDeliveryEnabled в объекте параметров фотографии."
Это важно, обратите на это внимание, чтобы избежать ненужного стресса.Используйте фактическое значение для отладки и убедитесь, что у вас включена соответствующая среда.
Имея все это на месте, вы должны получить фактические данные калибровки камеры из:
photo.cameraCalibrationData
Просто вытащитеэтого объекта, чтобы получить конкретные значения, которые вы ищете, например:
photo.cameraCalibrationData?.extrinsicMatrix
photo.cameraCalibrationData?.intrinsicMatrix
photo.cameraCalibrationData?.lensDistortionCenter
etc.
В основном все, что перечислено в документации, на которую вы ссылались, и на которую я снова ссылался.
Еще одинСтоит отметить, что если вы ищете только внутреннюю матрицу, это может быть получено гораздо проще (т.е. не так жестко для среды), чем остальные значения с помощью подхода, описанного в переполнении стека ,Если вы используете это для компьютерного зрения, для чего я его и использую, то иногда это все, что нужно.Но для действительно классных вещей вы захотите все это.