В чем разница между `opencv.android.JavaCameraView` и` opencv.android.NativeCameraView`

Exacly, как указано в теме: В чем разница между opencv.android.JavaCameraView и opencv.android.NativeCameraView. Каковы преимущества одного над другим, основные, которые дают больше возможностей?

Ответ 1

Из документации OpenCV:

Класс org.opencv.android.JavaCameraView реализуется внутри библиотеки OpenCV. Он унаследован от CameraBridgeViewBase, который расширяет SurfaceView и использует стандартный API камеры Android. В качестве альтернативы вы можете использовать класс org.opencv.android.NativeCameraView, который реализует один и тот же интерфейс, но использует класс VideoCapture в качестве доступа к базе данных камеры. opencv:show_fps="true" и opencv:camera_id="any" позволяют включить FPS-сообщение и разрешить использовать любую камеру на устройстве. Приложение сначала пытается использовать обратную камеру.

Реализация интерфейса CvCameraViewListener позволяет добавлять шаги обработки после захвата кадра с камеры и перед ее рендерингом на экране. Наиболее важная функция onCameraFrame. Это функция обратного вызова, и она вызывается для извлечения кадра из камеры. Вход обратного вызова является объектом класса CvCameraViewFrame, который представляет кадр из камеры.

Ответ 2

Я только что взял этот ответ от здесь (это немного старый ответ) и добавил, что я испытал:

встроенная камера:

  • (+ 1) более высокая частота кадров

  • (+ 1) захватить RGBA, нет необходимости конвертировать из формата android yuv.

  • ", скомпилированный только для архитектуры armv7" больше не соответствует действительности.
  • (- 1) не работает на всех устройствах → я подтверждаю!! Вот почему я не использую его. см. ошибка 2359.
  • (- 1) не поддерживает автофокусировку, настройку усиления.. (ответил в 2012 году)

Я надеюсь, что это может быть полезно!