2017-02-14 4 views
13

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

Проект работает (я вижу изображение на экране), а проект 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; 
} 

Спасибо заранее.

+0

Я буду в ближайшие дни, но буду проверять ответы на этот вопрос. – Brian

ответ

0

Я считаю, что OpenCV изначально не поддерживает использование с android.camera2

4

Пожалуйста, найти реализацию открытого резюме с Android, это может помочь вам. Калибровка

Camera calibration With OpenCV

камеры - OpenCV 2.3.1 андроида

https://groups.google.com/forum/#!topic/android-opencv/xXtUvdA1E4M

https://fossies.org/dox/opencv-3.2.0/CameraCalibrationActivity_8java_source.html

+0

Я посмотрел образцы кода из предоставленных вами ссылок, но на самом деле нет никакой «калибровки» для камеры, просто кто-то применяет границу к кадру, что мне совсем не помогает. Мне нужно увеличить и уменьшить чувствительность камеры при использовании OpenCV. Мне нужна емкость CPP, предоставляемая OpenCV, но калибровочная емкость камеры, предоставляемая android.hardware.camera2.CaptureRequest. – Brian

+0

Привет! Вы решили эту проблему? имеют ту же проблему с модулем camera2 – hagor

0

Ответ: нет, OpenCV не будет работать с android.camera2, не без какого-либо изогнутая работа вокруг.

+0

Вот подробный учебник: http://people.oregonstate.edu/~robinsti/CS_496/Tutorial/ –

+0

Go Beavers! Но на самом деле я не мог добраться до этого учебника, поскольку он заперт за некоторой защитой. Получена ошибка разрешения ошибок 403. – Brian

+0

Archive.org для resque: https://web.archive.org/web/20160429162315/http://people.oregonstate.edu/~robinsti/CS_496/Tutorial. Код на самом деле [на GitHub] (https://github.com/friendoflore/OpenCv-for-Android-Color-Detection) –

 Смежные вопросы

  • Нет связанных вопросов^_^