Have you configured the constituent devices?
Try:
In your session configuration:
photoOutput.isVirtualDeviceConstituentPhotoDeliveryEnabled = true
In your capture photo function:
// Enable constituent photo delivery for specific devices
let constituentDevices: [AVCaptureDevice] = [
.builtInWideAngleCamera,
.builtInUltraWideCamera,
].compactMap { AVCaptureDevice.default($0, for: .video, position: .back) }
photoSettings.virtualDeviceConstituentPhotoDeliveryEnabledDevices = constituentDevices
photoOutput.capturePhoto(with: photoSettings, delegate: self)
In your photoOutput delegate:
if let cameraCalibrationData = photo.cameraCalibrationData {
let extrinsicMatrix = cameraCalibrationData.extrinsicMatrix
print("Extrinsic Matrix: \(extrinsicMatrix)")
}
This should print two matrices:
The primary constituent device -> Identity matrix
The secondary constituent device -> [R|t] w.r.t. primary constituent device.
Topic:
App & System Services
SubTopic:
Core OS
Tags: