Можно ли использовать android.hardware.camera2.CaptureRequest с OpenCV?

Я работал над этим уже несколько дней. У меня есть проект на основе OpenCV / JavaCameraView, который я пытаюсь интегрировать с объектом Android android.hardware.camera2.CaptureRequest я использую для управления чувствительностью камеры к свету.

Проект CameraBridgeViewBase.CvCameraViewListener2/JavaCameraView работает (я вижу изображение на экране), и проект CaptureRequest работает (см. Также), но объединение двух технологий в одном проекте оказалось большой проблемой.

Кто-нибудь получил эти две технологии для совместной работы? Моя цель состоит в том, чтобы камера находилась под контролем CaptureRequest (ограниченная SENSOR_SENSITIVITY + SENSOR_EXPOSURE_TIME), но на экране отображалось потоковое изображение, фильтрованное через общую библиотеку OpenCV, которую я написал.

Чтобы управлять камерой, я могу использовать что-то вроде этого:

  mCameraDevice.createCaptureSession(Arrays.asList(surface, mImageReader.getSurface()), new CameraCaptureSession.StateCallback() { @Override public void onConfigured(@NonNull CameraCaptureSession cameraCaptureSession) { // The camera is already closed if (null == mCameraDevice) { return; } long exposureTime = 66259688,frameDuration = 1000; int sensitivity = 1512; mCaptureSession = cameraCaptureSession; try { mPreviewRequestBuilder.set(CaptureRequest.CONTROL_AF_MODE, CaptureRequest.CONTROL_AF_MODE_CONTINUOUS_PICTURE); setAutoFlash(mPreviewRequestBuilder); mPreviewRequestBuilder.set(CaptureRequest.CONTROL_AE_MODE, CaptureRequest.CONTROL_AE_MODE_OFF); mPreviewRequestBuilder.set(CaptureRequest.SENSOR_EXPOSURE_TIME, Long.valueOf(exposureTime)); mPreviewRequestBuilder.set(CaptureRequest.SENSOR_SENSITIVITY, Integer.valueOf(sensitivity)); mPreviewRequestBuilder.set(CaptureRequest.SENSOR_FRAME_DURATION, Long.valueOf(frameDuration)); mPreviewRequest = mPreviewRequestBuilder.build(); mCaptureSession.setRepeatingRequest(mPreviewRequest, mCaptureCallback, mBackgroundHandler); } catch (CameraAccessException e) { e.printStackTrace(); }catch (Exception e) { e.printStackTrace(); } } 

Чтобы фильтровать поток изображений, я могу использовать что-то вроде этого:

 public class MyCoolScanner extends AppCompatActivity implements CameraBridgeViewBase.CvCameraViewListener2 { ... @Override public Mat onCameraFrame(CameraBridgeViewBase.CvCameraViewFrame inputFrame) { mRgba = inputFrame.rgba(); OpenCVNative.myCoolLibrary(mRgba.getNativeObjAddr(),mGray.getNativeObjAddr()); return mGray; } 

Заранее спасибо.

Solutions Collecting From Web of "Можно ли использовать android.hardware.camera2.CaptureRequest с OpenCV?"