Kamerabild-Metadaten

Mit ARCore können Sie ImageMetadata verwenden, um auf Metadatenschlüsselwerte aus dem Ergebnis der Kamerabildaufnahme zuzugreifen. Gängige Arten von Metadaten von Kamerabildern, auf die Sie möglicherweise zugreifen möchten, sind Brennweite, Bildzeitstempeldaten oder Informationen zur Beleuchtung.

Das Android-Modul Camera kann je nach den Funktionen des Geräts 160 oder mehr Parameter zum Bild für jeden erfassten Frame aufzeichnen. Eine Liste aller möglichen Metadatenschlüssel finden Sie unter ImageMetadata.

Wert eines einzelnen Metadatenschlüssels abrufen

Verwenden Sie getImageMetadata(), um ein bestimmtes Schlüssel/Wert-Paar für Metadaten abzurufen, und fangen Sie den MetadataNotFoundException ab, wenn er nicht verfügbar ist. Im folgenden Beispiel wird gezeigt, wie der Metadatenschlüsselwert SENSOR_EXPOSURE_TIME abgerufen wird.

Java

// 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;
  }
}

Kotlin

// 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()
}