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