Можно ли вернуть AVDepthData с более чем 8-битными данными?
Я использую фронтальную камеру на iPhone X для захвата данных о глубине (используя ИК камеру с истинной глубиной).
Я могу довольно легко извлечь данные глубины из фотографии, которую я делаю, но эти данные, по-видимому, ограничены 8-битными значениями для каждой точки данных, хотя я считаю, что запрашиваю 32-битную точность. Увидеть ниже:
func photoOutput(_ output: AVCapturePhotoOutput, didFinishProcessingPhoto photo: AVCapturePhoto, error: Error?) {
let depthData = photo.depthData
if (depthData != nil) {
print("got some depth data")
let depthData = (depthData?.converting(toDepthDataType: kCVPixelFormatType_DepthFloat32))
}
}
Объект глубины данных в приведенном выше фрагменте содержит только 8-битные значения. Есть ли большая точность, доступная от AVDepthData?
1 ответ
Я не пробовал, поэтому я не уверен, сможете ли вы получить более "глубокий" формат глубины из камеры TrueDepth.
Однако, если вы можете преобразовать данные глубины, полученные из захвата, это не способ сделать это. depthData.converting(toDepthDataType:)
аналогично преобразованию скалярных типов. Например, если у вас есть значение типа Float
, дополнительные десятичные разряды, которые вы получаете, преобразовав его в Double
все нули - ваши существующие измерения не получили никакой точности.
Вы определяете форматы захвата глубины до захвата. Установите устройство захвата activeDepthDataFormat
к одному из supportedDepthDataFormats
совместим с его текущим activeFormat
, Значения, которые вы найдете в supportedDepthDataFormats
скажет вам, какие типы / точность данных о глубине может записывать ваше устройство захвата.