Siêu dữ liệu hình ảnh của máy ảnh

ARCore cho phép bạn sử dụng ImageMetadata để truy cập các giá trị khoá siêu dữ liệu từ kết quả chụp ảnh bằng máy ảnh. Một số loại siêu dữ liệu hình ảnh camera phổ biến mà bạn có thể muốn truy cập là tiêu cự, dữ liệu dấu thời gian của hình ảnh hoặc ánh sáng của bạn.

Mô-đun Camera của Android có thể ghi lại 160 tham số trở lên về hình ảnh cho từng khung hình được chụp, tuỳ thuộc vào khả năng của thiết bị. Để xem danh sách tất cả khoá siêu dữ liệu có thể dùng, hãy xem ImageMetadata.

Nhận giá trị của từng khoá siêu dữ liệu

Sử dụng getImageMetadata() để nhận một giá trị khoá siêu dữ liệu cụ thể và nắm bắt MetadataNotFoundException nếu không có. Ví dụ sau đây cho thấy việc lấy Giá trị khoá siêu dữ liệu SENSOR_EXPOSURE_TIME.

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