android底层设置相机帧率,如何使用Android CameraX ImageAnalysis提高帧率?

我正在研究新的CameraX API,与从我们当前的Camera2系统切换过来的可行性有关。

在我们的Camera2系统中,我们使用OpenGL surface从PreviewCaptureSession中捕获帧,并且我们在大多数设备上达到了一致的30fps图像处理速度,有些设备在启用自动曝光设置的情况下能够达到60fps。

CameraX没有给出任何接近这个速度的东西,我不确定是不是我错过了设置。

我已经为CameraX和ImageAnalysis设置了测试示例,但我得到的帧率对通过的图像数量是锁定的。

例如,我可以将分辨率低至320x240至1920x960,并且两者都将以16fps(似乎有上限)出现。

当我添加一个预览用例并设置enableTorch(真)时,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)

}

在CameraX的图像分析中,有没有改变相机设置以获得更高的帧率?

是否有任何改变的东西,如传感器持续时间,ISO和曝光?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值