Метаданные изображения камеры

ARCore позволяет использовать ImageMetadata для доступа к значениям ключей метаданных из результата захвата изображения с камеры. Некоторые распространенные типы метаданных изображения камеры, к которым вам может понадобиться доступ, — это фокусное расстояние, данные временной метки изображения или информация об освещении.

Модуль Camera Android может записывать 160 или более параметров изображения для каждого снятого кадра, в зависимости от возможностей устройства. Список всех возможных ключей метаданных см. в ImageMetadata .

Получить значение отдельного ключа метаданных

Используйте getImageMetadata() , чтобы получить определенное значение ключа метаданных, и перехватите MetadataNotFoundException , если оно недоступно. В следующем примере показано получение значения ключа метаданных SENSOR_EXPOSURE_TIME .

Ява

// Obtain the SENSOR_EXPOSURE_TIME metadata value from the frame.
Long getSensorExposureTime(Frame frame) {
  try {
    // Can throw NotYetAvailableException when sensors data is not yet available.
    ImageMetadata metadata = frame.getImageMetadata();

    // Get the exposure time metadata. Throws MetadataNotFoundException if it's not available.
    return metadata.getLong(ImageMetadata.SENSOR_EXPOSURE_TIME);
  } catch (MetadataNotFoundException | NotYetAvailableException exception) {
    return null;
  }
}

Котлин

// Obtain the SENSOR_EXPOSURE_TIME metadata value from the frame.
fun getSensorExposureTime(frame: Frame): Long? {
  return runCatching {
      // Can throw NotYetAvailableException when sensors data is not yet available.
      val metadata = frame.imageMetadata

      // Get the exposure time metadata. Throws MetadataNotFoundException if it's not available.
      return metadata.getLong(ImageMetadata.SENSOR_EXPOSURE_TIME)
    }
    .getOrNull()
}