如何解决Android Camera2 高速捕捉,焦点改变
我想在高速相机捕捉中实现焦点控制(FOCUS_DISTANCE)。
在拍照过程中,我只能通过onCaptureCompleted回调来实现。之后,我可以通过 Result 中的 LENS_STATE 查看镜头是否完成移动,但这只会获取镜头的当前状态,这意味着当对焦范围很长时,该值将始终为 1(移动)。我想在任何地方看到镜头状态,但在回调函数中,我应该怎么做?
例如,在连续高速拍摄100张照片时,我想检查拍摄照片时镜头是否在移动。我粗略的解决方案是用2个队列分别记录100个结果和100张照片,在拍摄结束时我可以得到每张照片对应的镜头状态。
感谢您的帮助!
private fun changeFocalWithCapture(focal: Float) {
val captureRequest = session.device.createCaptureRequest(
CameraDevice.TEMPLATE_PREVIEW).apply { addTarget(imageReader.surface) }
println(captureRequest)
captureRequest.set(CaptureRequest.CONTROL_AF_MODE,0)
captureRequest.set(CaptureRequest.LENS_FOCUS_DISTANCE,focal)
session.capture(captureRequest.build(),object : CameraCaptureSession.CaptureCallback() {
override fun onCaptureCompleted(
session: CameraCaptureSession,request: CaptureRequest,result: TotalCaptureResult) {
val d1 = result[CaptureResult.LENS_FOCUS_DISTANCE]
val lenState = result.get(CaptureResult.LENS_STATE)
correctNum+=1
val endTime = System.currentTimeMillis()
Log.v("current Time",(endTime-beginTime).toString())
Log.v("current num",correctNum.toString())
}
},cameraHandler)
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。