【发布时间】:2021-09-21 00:27:03
【问题描述】:
有没有办法使用CameraX 查询可用的相机分辨率?使用Camera2 可以使用StreamConfigurationMap.getOutputSizes()。但是,我找不到使用CameraX 的方法。
documentation 已经过时了。目前它引用版本1.0.0-alpha06,并且许多API在最新的1.0.0-beta01中发生了变化。
编辑:
有一种方法可以使用Camera2 API 获得可用的分辨率(感谢以下 Wasim 的回答)。但是,这只有在相机绑定到生命周期后才有可能,因此无法再更改目标分辨率,这使得它非常无用。
当然,我可以在不知道可用分辨率的情况下指定目标分辨率,但这样我就无法控制生成的纵横比。在我的情况下,我最终得到 16:9 Preview 和 4:3 ImageAnalysis,尽管我的 ImageAnalysis 的 targetResolution 是 16:9 (224x126)。
为了记录,这是您获得输出大小的方式:
val camera = cameraProvider.bindToLifecycle(this, cameraSelector, preview, imageAnalyzer)
val cameraId = Camera2CameraInfo.extractCameraId(camera.cameraInfo)
val cameraManager = context.getSystemService(Context.CAMERA_SERVICE) as CameraManager
val characteristics = cameraManager.getCameraCharacteristics(cameraId)
val streamConfigurationMap = characteristics.get(CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP)
val outputSizes = streamConfigurationMap.getOutputSizes(format)
仍在寻找实际的解决方案。提前致谢。
【问题讨论】:
-
未解决的参考:extractCameraId ...您是如何导入“Camera2CameraInfo”类的?
-
您好,您的问题解决了吗?谢谢!
-
@ch271828n 不,我最终改用了 Camera2。不过从那时起已经两年了,我已经很长时间没有从事那个项目了,所以现在也许有了 CameraX 更好的解决方案。