2017-09-25 99 views
5

Zrobiłem kilka wyszukiwania i znalazłem różne przykłady, dokumentację na iPhone X Face ID i jak można go używać do różnych rzeczy, takich jak uwierzytelnianie, animowane emotikony.Zestaw SDK dla mapy Raw Raw dla IPhone X

Czy chcesz sprawdzić, czy istnieje interfejs API/SDK, aby uzyskać nieprzetworzoną mapę głębokości z czujnika telefonu iPhone X do aplikacji?

Z mojego rozumienia obliczenia głębokości dokonuje się na podstawie rzutowanego wzoru. Może to być wykorzystane do uzyskania profilu głębokości dowolnego obiektu przed czujnikiem. (Może być zależne od tekstury obiektu.)

Odpowiedz

7

Potrzebujesz co najmniej 11,1 SDK dla systemu iOS w Xcode 9.1 (oba w wersji beta od tego pisania). Z tym, builtInTrueDepthCamera staje się jednym z camera types użyć, aby wybrać urządzenie przechwytywania:

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

Następnie można przejść do skonfigurowania AVCaptureSession z urządzeniem kamery TrueDepth i może używać tej sesji przechwytywania do przechwytywania informacji o głębokości podobnie jak można z tyłu podwójny aparat fotograficzny na iPhone Plus 7 i 8 oraz:

  • Włącz przechwytywania głębokości do zdjęć z AVCapturePhotoOutput.isDepthDataDeliveryEnabled, a następnie zrobić zdjęcie z AVCapturePhotoSettings.isDepthDataDeliveryEnabled. Możesz przeczytać depthData z obiektu AVCapturePhoto, który otrzymasz po zrobieniu, lub włączyć embedsDepthDataInPhoto, jeśli chcesz tylko strzelać i zapomnieć (i później odczytać dane z przechwyconego pliku obrazu).

  • Uzyskaj transmisję na żywo map głębi z AVCaptureDepthDataOutput. Ta jest podobna do wyjścia danych wideo; zamiast nagrywać bezpośrednio do pliku filmowego, przekazuje delegatowi sekwencję czasową obrazów (lub w tym przypadku głębokości) buforów. Jeśli jednocześnie przechwytujesz wideo, może być przydatne narzędzie AVCaptureDataOutputSynchronizer, dzięki któremu uzyskasz skoordynowane mapy głębi i ramki kolorów.

Jak Device Compatibility dokumentacji notatek Apple'a, trzeba wybrać urządzenie builtInTrueDepthCamera aby któryś z tych opcji przechwytywania głębokości. Jeśli wybierzesz przedni builtInWideAngleCamera, stanie się jak każdy inny aparat selfie, przechwytując tylko zdjęcia i wideo.


Wystarczy podkreślić: z punktu widzenia API widzenia przechwytywania głębokości z Przednia kamera TrueDepth na iPhone X jest bardzo podobny do przechwytywania głębokości z dwoma kamerami tylnych skierowaną na iPhone 7 PLUS i 8 Plus . Jeśli więc chcesz uzyskać szczegółowe informacje na temat ogólnego działania tego narzędzia do rejestrowania głębi i co możesz zrobić, przechwytując informacje o głębokości, sprawdź rozmowę WWDC17 Session 507: Capturing Depth in iPhone Photography.

+0

Skonfigurowałem moją AVCaptureDevice, jak wskazano, a kiedy próbuję włączyć dostarczanie danych głębokości na moim obiekcie AVCapturePhotoOutput pojawia się komunikat o błędzie "*** Kończenie aplikacji z powodu niezapisanego wyjątku" NSInvalidArgumentException ", powód:" * ** - [AVCapturePhotoOutput setDepthDataDeliveryEnabled:] Dostarczanie danych głębokości nie jest obsługiwane w bieżącej konfiguracji "". Czy wiesz, co może być przyczyną tego? Minęło dużo czasu, odkąd opracowałem na iOS, więc możliwe/prawdopodobne jest, że robię coś oczywistego. – stranger

+0

@rickster Dane głębokości zwracane przez kamerę skierowaną do przodu, czy możliwe jest zwrócenie więcej niż 8-bitowych danych/piksela? – Vickram