【发布时间】:2019-12-20 10:36:03
【问题描述】:
我正在研究新的 CameraX API,以了解从我们当前的 Camera2 系统切换的可行性。
在我们的 Camera2 系统中,我们使用 OpenGL 表面从 PreviewCaptureSession 捕获帧,并且我们在大多数设备上都达到了一致的 30fps 图像处理速度,其中一些能够在启用 AutoExposure 设置的情况下达到 60fps。
CameraX 没有提供接近那个速度的任何东西,我不确定我是否在设置中错过了它。
我已经为 CameraX 和 ImageAnalysis 设置了测试示例,但我获得了针对通过的图像数量的锁定帧速率。
例如,我可以将分辨率设置为低至 320x240 到 1920x960,两者都将以 16fps(看似有上限)出现。
当我添加一个 Preview 用例以与它一起运行并设置 enableTorch(true) 时,ImageAnalysis 用例将突然开始变得更像 20fps,有时会达到 30ish 的峰值。
很明显,预览用例改变了相机的某些自动曝光状态?
这是我当前设置的截图...
private fun startCameraAnalysis() {
val metrics = DisplayMetrics().also { viewFinder.display.getRealMetrics(it) }
var resolution = Size(metrics.widthPixels, metrics.heightPixels)
resolution = Size(640, 480) //set to fixed size for testing
val aspectRatio = Rational(resolution.width, resolution.height)
val rotation = viewFinder.display.rotation
// Setup image analysis pipeline
val analyzerConfig = ImageAnalysisConfig.Builder().apply {
val analyzerThread = HandlerThread(
"LuminosityAnalysis").apply { start() }
setCallbackHandler(Handler(analyzerThread.looper))
setImageReaderMode(ImageAnalysis.ImageReaderMode.ACQUIRE_LATEST_IMAGE)
setTargetRotation(rotation)
setTargetAspectRatio(aspectRatio)
setTargetResolution(resolution)
}.build()
// Setup preview pipeline
val previewConfig = PreviewConfig.Builder().apply {
setTargetRotation(rotation)
setTargetAspectRatio(aspectRatio)
setTargetResolution(resolution)
}.build()
// Build Preview useCase
val preview = Preview(previewConfig)
preview.enableTorch(true)
// Build Analysis useCase
val analyzer = ImageAnalysis(analyzerConfig)
analyzer.analyzer = LuminosityAnalyzer()
CameraX.bindToLifecycle(this, preview, analyzer )
preview.enableTorch(true)
}
是否可以围绕 ImageAnalysis 更改 CameraX 中的相机设置以获得更高的帧速率?
实际上是否真的可以改变传感器持续时间、ISO、曝光等内容?
【问题讨论】:
标签: android android-camera android-camerax