Можно ли вернуть 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 скажет вам, какие типы / точность данных о глубине может записывать ваше устройство захвата.

Другие вопросы по тегам