2017-09-25 16 views
5

Bazı aramalar yaptım ve iPhone X Face ID ile ilgili çeşitli örnekler, belgeler ve kimlik doğrulama, animasyonlu emojiler gibi çeşitli şeyler için nasıl kullanılabileceğini buldum.Ham Derinlik haritası IPhone için SDK X

IPhone X algılayıcısının ham derinlik haritasını uygulamaya getirmek için bir API/SDK olup olmadığını kontrol etmek ister misiniz?

Anlayışımdan derinlik hesaplaması yansıtılan modele göre yapılır. Bu, sensörün önündeki herhangi bir nesnenin derinlik profilini elde etmek için kullanılabilir. (Nesnenin yapısına bağlı olabilir.)

cevap

7

En azından Xcode 9.1'deki iOS 11.1 SDK'sına (her ikisi de bu yazımın beta sürümünde) ihtiyacınız olacak. Bunun üzerine, builtInTrueDepthCamera biri olur camera types bir yakalama cihazı seçmek için kullanın:

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

Sonra TrueDepth kamera cihazı ile bir AVCaptureSession kurmak üzerine gidebilir ve derinlik bilgileri yakalamak için bu yakalama oturumu kullanabilirsiniz geri çift iPhone 7 Plus ve 8 Plus kamera ile yapabilirsiniz çok gibi: AVCapturePhotoOutput.isDepthDataDeliveryEnabled ile fotoğraflar için derinlik yakalanmasına

  • açın, sonra AVCapturePhotoSettings.isDepthDataDeliveryEnabled ile bir resim çekin. Yakalamadan sonra aldığınız AVCapturePhoto nesnesinden depthData nesnesini okuyabilir veya yalnızca ateş etmek ve unutmak istiyorsanız (ve daha sonra yakalanan resim dosyasındaki verileri okuyun) embedsDepthDataInPhoto'u açın.

  • AVCaptureDepthDataOutput ile canlı bir derinlik haritaları besleme alın. Bu video veri çıkışı gibidir; doğrudan bir film dosyasına kayıt yapmak yerine, temsilci zamanlanmış bir görüntü dizisi (veya bu durumda derinlik) arabelleklerini verir. Aynı anda video çekiyorsanız AVCaptureDataOutputSynchronizer koordineli derinlik haritalarını ve renkli kareleri bir araya getirdiğinizden emin olmak için kullanışlı olabilir. Apple'ın Device Compatibility dokümantasyon notları gibi

, bu derinlik yakalama seçeneklerinden herhangi birini almak için builtInTrueDepthCamera cihazı seçmek gerekir. Ön tarafa bakan builtInWideAngleCamera'u seçerseniz, sadece fotoğraf ve video çeken başka bir selfie kamerası gibi olur.


Sadece vurgulamak: bakış bir API noktasından iPhone X öne bakan TrueDepth kamera ile derinliği alarak çok iPhone 7 Plus ve 8 Artı geri bakan çift kameralarla derinliği alarak gibidir . Bu derinliğin tüm işlerin genel olarak nasıl çalıştığını ve yakalanan derinlik bilgisiyle neler yapabileceğiniz konusunda derin bir dalış yapmak istiyorsanız, WWDC17 Session 507: Capturing Depth in iPhone Photography numaralı konuşmayı kontrol edin.

+0

AVCaptureDevice'yi belirttiğiniz şekilde ayarladım ve AVCapturePhotoOutput nesnesimde derinlik veri dağıtımını etkinleştirmeye çalıştığımda "*** Yakalanmamış özel durum 'NSInvalidArgumentException' nedeniyle uygulamayı sonlandırılıyor" şeklinde bir hata alıyorum, nedeni: '* ** - [AVCapturePhotoOutput setDepthDataDeliveryEnabled:] Mevcut yapılandırmada derinlikli veri iletimi desteklenmez ''. Buna neden olabileceğini biliyor musun? IOS için geliştirdiğimden bu yana çok uzun zaman geçti, bu yüzden olası bir şey yapmam mümkün/muhtemel. – stranger

+0

@rickster Ön taraftaki kamera tarafından döndürülen derinlik verileri, 8 bitlik veri/piksel başına daha fazla dönmek mümkün mü? – Vickram

İlgili konular