2017-09-25 3 views
5

Ich habe einige Suche und fand verschiedene Beispiele, Dokumentation auf dem iPhone X Face ID und wie es für verschiedene Sachen wie Authentifizierung, animierte Emojis verwendet werden kann.Raw Depth Karte SDK für IPhone X

Wollte prüfen, ob es eine API/SDK gibt, um die rohe Tiefenkarte vom iPhone X Sensor zur App zu bekommen?

Aus meinem Verständnis die Tiefenberechnung erfolgt auf der Grundlage der projizierten Muster. Dies kann verwendet werden, um ein Tiefenprofil eines Objekts vor dem Sensor zu erhalten. (Möglicherweise abhängig von der Textur des Objekts.)

Antwort

7

Sie benötigen mindestens das iOS 11.1-SDK in Xcode 9.1 (beide in der Beta-Version zum Zeitpunkt der Erstellung). Damit wird builtInTrueDepthCamera einer der camera types Sie verwenden ein Aufnahmegerät auszuwählen:

let device = AVCaptureDevice.default(.builtInTrueDepthCamera, for: .video, position: .front) 

Dann können Sie gehen auf eine AVCaptureSession mit dem TrueDepth Kamera-Gerät einrichten, und kann diese Aufnahmesitzung verwenden, um detaillierte Informationen zu erfassen so wie Sie mit der Rückseite Dual-Kamera auf dem iPhone 7 plus und 8 plus können:

  • Schalten Sie Tiefenerfassung für Fotos mit AVCapturePhotoOutput.isDepthDataDeliveryEnabled, schnappen dann ein Bild mit AVCapturePhotoSettings.isDepthDataDeliveryEnabled. Sie können die depthData aus dem AVCapturePhoto Objekt lesen, das Sie nach der Erfassung erhalten, oder die embedsDepthDataInPhoto einschalten, wenn Sie nur feuern und vergessen möchten (und die Daten aus der aufgenommenen Bilddatei später lesen).

  • Holen Sie sich einen Live-Feed von Tiefenkarten mit AVCaptureDepthDataOutput. Das ist wie die Videodatenausgabe; Anstatt direkt in eine Filmdatei aufzunehmen, erhält Ihr Delegierter eine zeitlich festgelegte Sequenz von Bildpuffern (oder in diesem Fall Tiefenpuffern). Wenn Sie gleichzeitig Videos aufzeichnen, können Sie auch AVCaptureDataOutputSynchronizer verwenden, um sicherzustellen, dass Sie aufeinander abgestimmte Tiefenkarten und Farbrahmen erhalten.

Wie Apples Device Compatibility Dokumentation Notizen, müssen Sie die builtInTrueDepthCamera Gerät auszuwählen jeder dieser Tiefe Capture-Optionen zu erhalten. Wenn Sie die nach vorne gerichtete builtInWideAngleCamera auswählen, wird sie wie jede andere Selfie-Kamera, die nur Fotos und Videos aufnimmt.


nur betonen: von einer API-Sicht mit der nach vorn gerichteten TrueDepth Kamera auf iPhone X Erfassung Tiefe ist viel wie Tiefe mit der Rücken gerichteten Dual-Kameras auf dem iPhone 7 Plus-Erfassung und 8 Plus . Wenn Sie also einen tiefgehenden Einblick in die Funktionsweise des gesamten Tiefenerfassungsgeschäfts im Allgemeinen erhalten möchten und was Sie mit erfassten Tiefeninformationen tun können, lesen Sie den Artikel WWDC17 Session 507: Capturing Depth in iPhone Photography.

+0

Ich habe mein AVCaptureDevice wie angegeben eingerichtet, und wenn ich versuche, die Tiefendatenübertragung auf meinem AVCapturePhotoOutput-Objekt zu aktivieren, erhalte ich die Fehlermeldung "*** App aufgrund der nicht abgefangenen Ausnahme beenden 'NSInvalidArgumentException', Grund: '* ** - [AVCapturePhotoOutput setDepthDataDeliveryEnabled:] Depth-Datenübermittlung wird in der aktuellen Konfiguration nicht unterstützt ''. Weißt du, was das verursacht? Es ist lange her, seit ich für iOS entwickelt habe, also ist es möglich/wahrscheinlich, dass ich etwas Offensichtliches mache. – stranger

+0

@rickster Die Tiefendaten, die von der Frontkamera zurückgegeben werden, ist es möglich, mehr als 8-Bit-Daten pro Pixel zurückzugeben? – Vickram