Я пытаюсь сохранить данные о глубине с сенсора FaceId TrueDepth на iPad Pro. Я взял этот демонстрационный код и добавил следующий код простой кнопкой :
@IBAction func exportData(_ sender: Any) {
let ciimage = CIImage(cvPixelBuffer: realDepthData.depthDataMap)
let depthUIImage = UIImage(ciImage: ciimage)
let data = depthUIImage.pngData()
print("data: \(realDepthData.depthDataMap)")
do {
let directory = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0];
let path = directory.appendingPathComponent("FaceIdData.png");
try data!.write(to: path)
let activityViewController = UIActivityViewController(activityItems: [path], applicationActivities: nil)
activityViewController.popoverPresentationController?.sourceView = exportMeshButton
present(activityViewController, animated: true, completion: nil)
} catch {
print("Unable to save image")
}
}
realDepthData
- это свойство класса, которое я добавил и обновляю в dataOutputSynchronizer
:
func dataOutputSynchronizer(_ synchronizer: AVCaptureDataOutputSynchronizer,
didOutput synchronizedDataCollection: AVCaptureSynchronizedDataCollection) {
...
let depthData = syncedDepthData.depthData
let depthPixelBuffer = depthData.depthDataMap
self.realDepthData = depthData
...
}
Я могу сохранить изображение (серая шкала), но теряю некоторую информацию о глубине, особенно на заднем плане, где все объекты полностью белые. Вы можете видеть это на изображении ниже, стена и второй человек позади не отображаются должным образом (все белые). Если я не ошибаюсь, из того, что я видел в приложении, у меня должна быть дополнительная информация!
Спасибо!