Android Camera2 CameraCharacteristics Key 詳細解說

一、簡介

CameraCharacteristics 是專門用來描述相機設備屬性的一個類,繼承自CameraMetadata類。給對給定的相機,它裏面所包含的屬性都是 固定的 ,也就是我們說的靜態metadata.
包括:曝光補償(Exposure compensation)
自動曝光/自動對焦/自動白平衡模式(AE / AF / AWB mode)
自動曝光/自動白平衡鎖(AE / AWB lock)
自動對焦觸發器(AF trigger)
拍攝前自動曝光觸發器(Precapture AE trigger)
測量區域(Metering regions)
閃光燈觸發器(Flash trigger)
曝光時間(Exposure time)
感光度(ISO Sensitivity)
幀間隔(Frame duration)
鏡頭對焦距離(Lens focus distance)
色彩校正矩陣(Color correction matrix)
JPEG 元數據(JPEG metadata)
色調映射曲線(Tonemap curve)
裁剪區域(Crop region)
目標 FPS 範圍(Target FPS range)
拍攝意圖(Capture intent)
硬件視頻防抖(Video stabilization)等。
除了以上的這些,驅動也可以配置特定的KEY,我們可以通過定義一個

    public static final CameraCharacteristics.Key<Integer> keyName =
            new CameraCharacteristics.Key<Integer>("android.counstom.key", Integer.class);
            // 獲取指定攝像頭的特性
            CameraCharacteristics characteristics
                    = manager.getCameraCharacteristics(mCameraId);
            // 獲取驅動自定義的配置屬性
            int map = characteristics.get(keyName);

官方文檔鏈接:https://developer.android.google.cn/reference/android/hardware/camera2/CameraCharacteristics

二、獲取 CameraCharacteristics 示例

通過CameraManager的getCameraCharacteristics(String cameraId)方法獲取指定相機設備的 CameraCharacteristics 對象。

private int mCameraId = CameraCharacteristics.LENS_FACING_FRONT; // 要打開的攝像頭ID
private CameraManager mCameraManager; // 相機管理者
private CameraCharacteristics mCameraCharacteristics; // 相機屬性

public void openCamera() {
    try {
        mCameraCharacteristics = mCameraManager.getCameraCharacteristics(Integer.toString(mCameraId));
        StreamConfigurationMap map = mCameraCharacteristics.get(CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP);
        // ...省略
    } catch (CameraAccessException e) {
        e.printStackTrace();
    }
}

三、內部類

包含一個CameraCharacteristics.Key的內部類,用做相機特性的字段查詢使用。
常搭配CameraCharacteristics.get(CameraCharacteristics.Key key)方法使用。

四、常用方法

  1. T get(CameraCharacteristics.Key key)
    獲取相機屬性中對應字段的值。如果輸入的 key 沒有設置,將返回 null。

  2. List<CameraCharacteristics.Key<?>> getKeys()
    獲取該相機設備支持的CameraCharacteristics.Key的列表。
    該方法獲取的 Key 的列表,可以保證用作 CameraCharacteristics 類的 get() 方法時不會返回 null。
    返回的 list 是不允許修改的,否則將拋出 UnsupportedOperationException 異常。

  3. List<CaptureRequest.Key<?>> getAvailableCaptureRequestKeys()
    獲取該相機設備支持的CaptureRequest.Key的列表。可用於 CaptureRequest 類的 get() 方法。

  4. List<CaptureResult.Key<?>> getAvailableCaptureResultKeys()
    獲取該相機設備支持的CaptureResult.Key的列表。可用於 CaptureResult 類的 get() 方法。

五、成員字段

以下就是一些通用的KEY值及詳解

類型 字段名 詳解
public static final Key<int[]> COLOR_CORRECTION_AVAILABLE_ABERRATION_MODES 相機設備支持的像差校正模式列表,用於 android.colorCorrection.aberrationMode
public static final Key<int[]> CONTROL_AE_AVAILABLE_ANTIBANDING_MODES 相機設備支持的自動曝光反衝帶模式列表,用於 android.control.aeAntibandingMode
public static final Key<int[]> CONTROL_AE_AVAILABLE_MODES 相機設備支持的自動曝光模式列表,用於 android.control.aeMode
public static final Key<Range[]> CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES 相機設備支持的幀率範圍,用於 android.control.aeTargetFpsRange
public static final Key<Range> CONTROL_AE_COMPENSATION_RANGE 相機設備支持的曝光補償範圍,用於 android.control.aeExposureCompensation
public static final Key CONTROL_AE_COMPENSATION_STEP 曝光補償能夠改變的最小步長
public static final Key CONTROL_AE_LOCK_AVAILABLE 相機設備是否支持 android.control.aeLock
public static final Key<int[]> CONTROL_AF_AVAILABLE_MODES 相機設備支持的自動聚焦模式列表,用於 android.control.afMode
public static final Key<int[]> CONTROL_AVAILABLE_EFFECTS 相機設備支持的顏色效果列表,用於 android.control.effectMode
public static final Key<int[]> CONTROL_AVAILABLE_MODES 相機設備支持的控制模式列表,用於 android.control.mode
public static final Key<int[]> CONTROL_AVAILABLE_SCENE_MODES 相機設備支持的場景模式列表(如夜景、美食、燭光等),用於 android.control.sceneMode
public static final Key<int[]> CONTROL_AVAILABLE_VIDEO_STABILIZATION_MODES 相機設備支持的視頻穩定模式列表,用於 android.control.videoStabilizationMode
public static final Key<int[]> CONTROL_AWB_AVAILABLE_MODES 相機設備支持的自動白平衡模式列表,用於 android.control.awbMode
public static final Key CONTROL_AWB_LOCK_AVAILABLE 相機設備是否支持 android.control.awbLock
public static final Key CONTROL_MAX_REGIONS_AE 自動曝光可使用的最大測量區域數
public static final Key CONTROL_MAX_REGIONS_AF 自動聚焦可使用的最大測量區域數
public static final Key CONTROL_MAX_REGIONS_AWB 自動白平衡可使用的最大測量區域數
public static final Key<Range> CONTROL_POST_RAW_SENSITIVITY_BOOST_RANGE 相機設備支持的 boost 範圍,用於 android.control.postRawSensitivityBoost
public static final Key DEPTH_DEPTH_IS_EXCLUSIVE 指出一個捕捉請求是否能夠同時支持深度輸出(如 DEPTH16 / DEPTH_POINT_CLOUD)和普通顏色輸出(如 YUV_420_888, JPEG 或 RAW)
public static final Key<int[]> DISTORTION_CORRECTION_AVAILABLE_MODES 相機設備支持的畸變矯正模式列表,用於 android.distortionCorrection.mode
public static final Key<int[]> EDGE_AVAILABLE_EDGE_MODES 相機設備支持的邊緣增強模式列表,用於 android.edge.mode
public static final Key FLASH_INFO_AVAILABLE 相機設備是否有閃光燈部件
public static final Key<int[]> HOT_PIXEL_AVAILABLE_HOT_PIXEL_MODES 相機設備支持的像素矯正模式列表,用於 android.hotPixel.mode
public static final Key INFO_SUPPORTED_HARDWARE_LEVEL 相機設備支持的硬件等級
public static final Key INFO_VERSION 關於相機設備的製造商版本信息,例如網絡服務硬件、傳感器等
public static final Key<Size[]> JPEG_AVAILABLE_THUMBNAIL_SIZES 相機設備支持的 JPEG 格式縮略圖大小列表,用於 android.jpeg.thumbnailSize
public static final Key<float[]> LENS_DISTORTION 矯正係數,以糾正相機設備的徑向和切向的鏡頭畸變
public static final Key LENS_FACING 相機設備相對於屏幕的方向,例如後置攝像頭一般是 LENS_FACING_FRONT
public static final Key<float[]> LENS_INFO_AVAILABLE_APERTURES 相機設備支持的光圈大小列表,用於 android.lens.aperture
public static final Key<float[]> LENS_INFO_AVAILABLE_FILTER_DENSITIES 相機設備支持的中性密度濾波值列表,用於 android.lens.filterDensity
public static final Key<float[]> LENS_INFO_AVAILABLE_FOCAL_LENGTHS 相機設備支持的焦距列表,用於 android.lens.focalLength
public static final Key<int[]> LENS_INFO_AVAILABLE_OPTICAL_STABILIZATION 相機設備支持的光學穩像(optical image stabilization,OIS)模式列表,用於 android.lens.opticalStabilizationMode
public static final Key LENS_INFO_FOCUS_DISTANCE_CALIBRATION 鏡頭焦距校準質量
public static final Key LENS_INFO_HYPERFOCAL_DISTANCE 鏡頭的超焦距
public static final Key LENS_INFO_MINIMUM_FOCUS_DISTANCE 能使鏡頭聚焦的最短距離
public static final Key<float[]> LENS_INTRINSIC_CALIBRATION 相機設備的內部標定參數(相機內參)
public static final Key LENS_POSE_REFERENCE 鏡頭的引用位置,即用於 android.lens.poseTranslation 的起始座標
public static final Key<float[]> LENS_POSE_ROTATION 相機設備相對於傳感器座標系的方向
public static final Key<float[]> LENS_POSE_TRANSLATION 相機光學中心位置
public static final Key<float[]> LENS_RADIAL_DISTORTION 鏡頭徑向畸變,在 Android 28 上已棄用,使用 android.lens.distortion 代替
public static final Key LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE 物理相機間幀時間戳同步的準確性,決定了物理相機同時開始曝光的能力
public static final Key<int[]> NOISE_REDUCTION_AVAILABLE_NOISE_REDUCTION_MODES 相機設備支持的降噪模式列表,用於 android.noiseReduction.mode
public static final Key REPROCESS_MAX_CAPTURE_STALL 重處理捕獲請求時的最大失幀(以幀爲單位)
public static final Key<int[]> REQUEST_AVAILABLE_CAPABILITIES 相機設備完全支持的功能列表
public static final Key REQUEST_MAX_NUM_INPUT_STREAMS 相機設備能夠同時支持的不同類型的輸入流最大數量
public static final Key REQUEST_MAX_NUM_OUTPUT_PROC 相機設備能夠同時支持的不同處理格式的輸出流最大數量(無停頓)
public static final Key REQUEST_MAX_NUM_OUTPUT_PROC_STALLING 相機設備能夠同時支持的不同處理格式的輸出流最大數量(有停頓)
public static final Key REQUEST_MAX_NUM_OUTPUT_RAW 對於任何 RAW 格式,相機設備能夠同時支持的不同類型的輸出流最大數量
public static final Key REQUEST_PARTIAL_RESULT_COUNT 定義一個結果將由多少個子結構組成
public static final Key REQUEST_PIPELINE_MAX_DEPTH 指定一個幀從暴露到可使用,所經過的管道階段數的最大值
public static final Key SCALER_AVAILABLE_MAX_DIGITAL_ZOOM active 區域寬高和裁剪區域寬度比值的最大值,用於 android.scaler.cropRegion
public static final Key SCALER_CROPPING_TYPE 相機設備支持的裁剪類型,有 CENTER_ONLY 和 FREEFORM·兩種
public static final Key SCALER_STREAM_CONFIGURATION_MAP 相機設備支持的可用流的配置,包括最小幀間隔、不同格式、大小組合的失幀時長
public static final Key<int[]> SENSOR_AVAILABLE_TEST_PATTERN_MODES 相機設備支持的測試模式列表,用於 android.sensor.testPatternMode
public static final Key SENSOR_BLACK_LEVEL_PATTERN 每個彩色濾光片排列(CFA)鑲嵌通道的固定黑色電平偏移量
public static final Key SENSOR_CALIBRATION_TRANSFORM1 從參考傳感器顏色空間映射到實際設備傳感器顏色空間的每個設備校準轉換矩陣
public static final Key SENSOR_CALIBRATION_TRANSFORM2 從參考傳感器顏色空間映射到實際設備傳感器顏色空間(這是原始緩衝區數據的顏色空間)的每個設備校準轉換矩陣
public static final Key SENSOR_COLOR_TRANSFORM1 將顏色值從CIE XYZ顏色空間轉換爲參考傳感器顏色空間的矩陣
public static final Key SENSOR_COLOR_TRANSFORM2 將顏色值從CIE XYZ顏色空間轉換爲參考傳感器顏色空間的矩陣
public static final Key SENSOR_FORWARD_MATRIX1 一個矩陣,將白平衡攝像機顏色從參考傳感器顏色空間轉換爲帶有D50白點的CIE XYZ顏色空間
public static final Key SENSOR_FORWARD_MATRIX2 一個矩陣,將白平衡攝像機顏色從參考傳感器顏色空間轉換爲帶有D50白點的CIE XYZ顏色空間
public static final Key SENSOR_INFO_ACTIVE_ARRAY_SIZE 經過幾何畸變校正後,圖像傳感器對應於活動像素的面積
public static final Key SENSOR_INFO_COLOR_FILTER_ARRANGEMENT 傳感器上顏色濾波器的排列,按讀取順序,表示傳感器左上2x2部分的顏色
public static final Key<Range> SENSOR_INFO_EXPOSURE_TIME_RANGE 相機設備支持的圖片曝光時間範圍,用於 android.sensor.exposureTime
public static final Key SENSOR_INFO_LENS_SHADING_APPLIED 相機設備輸出的原始圖像是否受鏡頭陰影校正影響
public static final Key SENSOR_INFO_MAX_FRAME_DURATION 相機設備支持的最大的幀間隔時間,用於 android.sensor.frameDuration
public static final Key SENSOR_INFO_PHYSICAL_SIZE 完整像素數列的物理尺寸
public static final Key SENSOR_INFO_PIXEL_ARRAY_SIZE 完整像素數列的尺寸,可能包括黑色校準像素
public static final Key SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE 在應用任何幾何畸變校正之前,與活動像素相對應的圖像傳感器的面積
public static final Key<Range> SENSOR_INFO_SENSITIVITY_RANGE 相機設備支持的敏感度範圍,用於 android.sensor.sensitivity
public static final Key SENSOR_INFO_TIMESTAMP_SOURCE 傳感器開始捕捉的時間戳的時間基礎
public static final Key SENSOR_INFO_WHITE_LEVEL 傳感器最大的 raw 值輸出
public static final Key SENSOR_MAX_ANALOG_SENSITIVITY 純粹通過模擬增益實現的最大敏感度
public static final Key<Rect[]> SENSOR_OPTICAL_BLACK_REGIONS 表示傳感器光學屏蔽的黑色像素區域的不相交矩形列表
public static final Key SENSOR_ORIENTATION 使輸出圖像在設備屏幕上以本機方向垂直,順時針方向旋轉的角度
public static final Key SENSOR_REFERENCE_ILLUMINANT1 當計算 android.sensor.colorTransform1, android.sensor.calibrationTransform1 和 android.sensor.forwardMatrix1 矩陣時,作爲場景光源的標準參考光源
public static final Key SENSOR_REFERENCE_ILLUMINANT2 當計算 android.sensor.colorTransform2, android.sensor.calibrationTransform2 和 android.sensor.forwardMatrix2 矩陣時,作爲場景光源的標準參考光源
public static final Key<int[]> SHADING_AVAILABLE_MODES 相機設備支持的鏡頭應用模式列表,用於 android.shading.mode
public static final Key<int[]> STATISTICS_INFO_AVAILABLE_FACE_DETECT_MODES 相機設備支持的人臉檢測模式列表,用於 android.statistics.faceDetectMode
public static final Key<boolean[]> STATISTICS_INFO_AVAILABLE_HOT_PIXEL_MAP_MODES 相機設備支持的熱像素映射輸出模式列表,用於 android.statistics.hotPixelMapMode
public static final Key<int[]> STATISTICS_INFO_AVAILABLE_LENS_SHADING_MAP_MODES 相機設備支持的鏡頭陰影映射輸出模式列表,用於 android.statistics.lensShadingMapMode
public static final Key<int[]> STATISTICS_INFO_AVAILABLE_OIS_DATA_MODES 相機設備支持
public static final Key STATISTICS_INFO_MAX_FACE_COUNT 同時能夠檢測的人臉數的最大值
public static final Key SYNC_MAX_LATENCY 請求(與前一個請求不同)提交後以及結果狀態同步之前可能出現的最大幀數
public static final Key<int[]> TONEMAP_AVAILABLE_TONE_MAP_MODES 相機設備支持的圖像增強映射模式列表,用於 android.tonemap.mode
public static final Key TONEMAP_MAX_CURVE_POINTS 圖像增強映射曲線支持的最大點的數量,用於 android.tonemap.curve
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章