Working with CameraCaptureSession.CaptureCallback() in Camer



在相机1中,我们有FaceDetectionListenercamera.startFaceDetection()方法。用这种方法更容易找到人脸。

在camera 2中,我们可以使用cameracapturessession . capturecallback()方法和这个静态变量

做同样的事情
Integer mode = result.get(CaptureResult.STATISTICS_FACE_DETECT_MODE);
Face[] faces = result.get(CaptureResult.STATISTICS_FACES);

现在有一个新的相机库叫做CameraX。它是Camera2的包装器,推荐使用。如果它是相机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,
request: CaptureRequest,
result: TotalCaptureResult
) {

}
}

mCaptureSession.setRepeatingRequest(mPreviewRequest, mCaptureCallback,
mBackgroundHandler);

如何使用CameraX获得回调结果?

你可以使用CameraX的camera2互操作类,这些类提供了CameraX和camera2 api之间的互操作层。

如果您需要在用例(例如Preview用例)上设置CaptureCallback以跟踪其捕获请求的进度,您可以这样做:

// 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)

最新更新