Изображения переплетаются при использовании camera2 API

Я пытаюсь создать приложение, используя API-интерфейс camera2, мне нужно создать пакет из 30 кадров в секунду, который я смог создать.

Проблема заключается в том, что изображения предварительного просмотра и сохраненные изображения чересстрочные (я фотографирую несколько мигающих светодиодов, поэтому их легко увидеть). Я пытался отключить автоэкспозицию и сам установить чувствительность, но это не сработало.

 private void captureStillPicture() {
    try {
        final Activity activity = getActivity();
        mPictureCounter = 0;
        if (null == activity || null == mCameraDevice) {
            return;
        }

        List<CaptureRequest> captureList = new ArrayList<CaptureRequest>();

        // This is the CaptureRequest.Builder that we use to take a picture.
        final CaptureRequest.Builder captureBuilder = mCameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_STILL_CAPTURE);

        // Use the same AE and AF modes as the preview.
        captureBuilder.set(CaptureRequest.CONTROL_AF_MODE, CaptureRequest.CONTROL_AF_MODE_AUTO);
        captureBuilder.set(CaptureRequest.SENSOR_SENSITIVITY, 2000);
        //Auto focus - should keep that
        captureBuilder.set(CaptureRequest.CONTROL_AE_MODE, Consts.aeMode);

        captureBuilder.addTarget(mImageReader.getSurface());

        for(int i = 0; i < Consts.frameAmount; i++) {
            captureList.add(captureBuilder.build());
        }

        CameraCaptureSession.CaptureCallback CaptureCallback = new CameraCaptureSession.CaptureCallback() {
            @Override
            public void onCaptureCompleted(@NonNull CameraCaptureSession session,
                                           @NonNull CaptureRequest request,
                                           @NonNull TotalCaptureResult result) {
                mPictureCounter++;
                unlockFocus();
            }
        };

        mCaptureSession.stopRepeating();
        mCaptureSession.captureBurst(captureList, CaptureCallback, mBackgroundHandler);

    } catch (CameraAccessException e) {
        e.printStackTrace();
    }
}

Есть мысли?

0 ответов

Другие вопросы по тегам