CameraX ImageAnalysis 輸出幀大小設置

CameraX ImageAnalysis 輸出幀大小設置

CameraX 是對 Jetpack 的補充,可讓您更輕鬆地利用 Camera2 API 的功能
它提供一致且易於使用的 API 界面,適用於大多數 Android 設備,並可向後兼容至 Android 5.0(API 級別 21)。
CameraX 架構
GitHub:CameraXBasic

設置分析幀大小有以下兩個函數,只能選擇其一,否則運行會出錯

//設置寬高比
ImageAnalysis.Builder().setTargetAspectRatio(AspectRatio.RATIO_16_9)

//設置實際的尺寸
ImageAnalysis.Builder().setTargetResolution(Size(1920, 1080))

Camex配置中有如下描述

用例 內部界面分辨率 輸出數據分辨率
預覽 寬高比:使目標與設置最相符的分辨率。
默認分辨率:最高的預覽分辨率,或與上述寬高比匹配的最高設備首選分辨率。
最大分辨率:預覽大小,指的是與設備的屏幕分辨率或 1080p (1920x1080) 匹配的最佳尺寸(以較低者爲準)。
內部界面分辨率。提供元數據以允許 View 針對目標寬高比進行剪裁、縮放和旋轉。
圖片分析 寬高比:使目標與設置最相符的分辨率。
默認分辨率:默認目標分辨率設置爲 640x480。同時調整目標分辨率和相應的寬高比會導致支持的最佳分辨率低於 1080p。
最大分辨率:CameraX 將其限制爲 1080p。目標分辨率默認設置爲 640x480;如果您希望分辨率大於 640x480,則必須使用 setTargetResolutionsetTargetAspectRatio 從支持的分辨率中選擇最接近的一個。
內部界面分辨率。
圖片拍攝 寬高比:最適合設置的寬高比。
默認分辨率:最高的可用分辨率,或與上述寬高比匹配的最高設備首選分辨率。
最大分辨率StreamConfigurationMap#getOutputSizes 中 JPEG 格式的相機設備的最大輸出分辨率
內部界面分辨率。

真機(小米MIX3參數)測試結果如下,測試代碼 Gitee:CameraXBasic

  • setTargetAspectRatio(AspectRatio.RATIO_16_9),ImageAnalysis 最大隻能輸出1280x720,無法輸出1920x1080
  • setTargetResolution(Size(1920, 1080)) ,ImageAnalysis 最大隻能輸出1600x1200,無法輸出1920X1080

綜上

  • 如果要拿到Camera輸出的1920X1080數據,CameraX的API不適合
  • Camera2 錄像並獲取實時幀可參考 Gitee:Camera2VideoJava
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章