如何解决无法将 CameraX 图像分析分辨率提高到 1024x768
我的 CameraX 相机似乎无法提供大于 1024x768 的任何图像分析分辨率
这是我的设置
def cameraXVersion = "1.0.0-rc02"
implementation "androidx.camera:camera-camera2:$cameraXVersion"
implementation "androidx.camera:camera-lifecycle:$cameraXVersion"
implementation "androidx.camera:camera-view:1.0.0-alpha21"
val imageAnalyzer = cameraFrameAnalyzer?.let { analyzer ->
ImageAnalysis.Builder()
.setTargetResolution(Size(1080,1440)) // also tried Size(1440,1080),no change
.setMaxResolution(Size(1440,1440))
.setTargetRotation(cameraXStartOrientation ?: cameraPreviewOrientation)
.setBackpressureStrategy(ImageAnalysis.STRATEGY_KEEP_ONLY_LATEST)
.build().apply {
setAnalyzer(cameraExecutor,GenericAnalyzer(analyzer))
}
}
...
// commented out all other use cases to make sure they're not interfering
cameraProvider.bindToLifecycle(
lifecycleOwner,cameraSelector,/*preview,imageCapture,*/ imageAnalyzer
)
如果设备方向发生变化,我稍后也会改变 imageAnalysis 用例的旋转,不确定这是否会以某种方式搞砸。注释掉没有效果
override fun updateRotation(orientation: DeviceRotationHelper.Orientation) {
super.updateRotation(orientation)
val cameraXRotation = orientation.toCameraXOrientation()
imageCapture?.targetRotation = cameraXRotation
imageAnalysis?.targetRotation = cameraXRotation
}
根据此代码,1440x1080 位于输出尺寸列表中(远不及最大尺寸),并且小于为 CameraX 设置的 1080p 最大值:
val characteristics = Camera2CameraInfo.extractCameraCharacteristics(camera!!.cameraInfo)
val streamConfigurationMap = characteristics.get(CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP)
val outputSizes = streamConfigurationMap!!.getOutputSizes(ImageFormat.YUV_420_888)
println(outputSizes)
根据特性,我的设备是LEVEL_3
characteristics.get(CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL) == CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL_3 // true
根据本文档,这是列出的最高级别 https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL
那么我在这里做错了什么?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。