如何解决在 CameraX 中使用 CameraCaptureSession.CaptureCallback()
在相机 1 中,我们有 FaceDetectionListener
和 camera.startFaceDetection()
方法。使用这种方式可以更容易地找到人脸。
在相机 2 中,我们可以使用 CameraCaptureSession.CaptureCallback() 方法和这个静态变量来做同样的事情
Integer mode = result.get(CaptureResult.STATISTICS_FACE_DETECT_MODE);
Face[] faces = result.get(CaptureResult.STATISTICS_FACES);
现在有一个名为 CameraX 的新相机库。它是 Camera2 的包装器,推荐使用。
如果是Camera 2的封装,我们很容易得到CameraCaptureSession.CaptureCallback()
但是经过 3 天的尝试,我未能找到解决方案。
谁能给我像camera2那样调用以下方法的解决方案?
在 Camera2 中,
private val mCaptureCallback = object : CameraCaptureSession.CaptureCallback() {
override fun onCaptureProgressed(
session: CameraCaptureSession,request: CaptureRequest,partialResult: CaptureResult
) {
}
override fun onCaptureCompleted(
session: CameraCaptureSession,result: TotalCaptureResult
) {
}
}
mCaptureSession.setRepeatingRequest(mPreviewRequest,mCaptureCallback,mBackgroundHandler);
如何使用CameraX获取回调结果?
解决方法
您可以使用 CameraX 的 camera2 interop classes,它提供了 CameraX 和 Camera2 API 之间的互操作层。
如果您需要在用例(例如 CaptureCallback
用例)上设置 Preview
以跟踪其捕获请求的进度,您可以按如下方式进行:
// Set up and configure the Preview's builder
val previewBuilder = Preview.Builder()
// Create the callback you want to attach to the Preview use case
val captureCallback = object : CameraCaptureSession.CaptureCallback() {
...
}
// Create an Extender to attach Camera2 options
val previewExtender = Camera2Interop.Extender(previewBuilder)
// Attach the Camera2 CaptureCallback
previewExtender.setSessionCaptureCallback(captureCallback)
// Initialize the Preview use case
val preview = previewBuilder.build()
// bind the Preview use case
cameraProvider.bindToLifecycle(lifecycleOwner,cameraSelector,preview)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。