Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is the difference between `opencv.android.JavaCameraView` and `opencv.android.NativeCameraView`

Exacly as stated in the subject: What is the difference between opencv.android.JavaCameraView and opencv.android.NativeCameraView. What are advantages one over the other, the main ones, which gives more options?

like image 373
Yoda Avatar asked May 18 '13 16:05

Yoda


2 Answers

From the OpenCV documentation:

The org.opencv.android.JavaCameraView class is implemented inside OpenCV library. It is inherited from CameraBridgeViewBase, that extends SurfaceView and uses standard Android camera API. Alternatively you can use org.opencv.android.NativeCameraView class, that implements the same interface, but uses VideoCapture class as camera access back-end. opencv:show_fps="true" and opencv:camera_id="any" options enable FPS message and allow to use any camera on device. Application tries to use back camera first.

Implementation of CvCameraViewListener interface allows you to add processing steps after frame grabbing from camera and before its rendering on screen. The most important function is onCameraFrame. It is callback function and it is called on retrieving frame from camera. The callback input is object of CvCameraViewFrame class that represents frame from camera.

like image 111
0x6C38 Avatar answered Oct 23 '22 01:10

0x6C38


I just took this answer from here (Which is a bit old answer) and added what I experienced:

native camera:

  • (+1) higher framerate

  • (+1) capture RGBA, no need to convert from android yuv format.

  • "compiled only for armv7 architecture" not true anymore.
  • (-1) not work on all devices -> I confirm !! This is why I don't use it !! see bug 2359.
  • (-1) not support autofocus, setting gain.. (answered in 2012)

I hope this can be helpful !

like image 32
ahmed_khan_89 Avatar answered Oct 23 '22 00:10

ahmed_khan_89