SHARE
TWEET

Trouble setting exposure with android

a guest May 16th, 2016 138 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. package com.williams.drew.opencvtest;
  2.  
  3. import android.graphics.Paint;
  4. import android.hardware.camera2.CameraDevice;
  5. import android.hardware.camera2.CameraMetadata;
  6. import android.hardware.camera2.CaptureRequest;
  7. import android.os.Bundle;
  8. import android.support.annotation.NonNull;
  9. import android.support.v7.app.AppCompatActivity;
  10. import android.util.Log;
  11. import android.view.SurfaceView;
  12. import android.view.WindowManager;
  13.  
  14. import org.opencv.android.JavaCameraView;
  15. import org.opencv.android.BaseLoaderCallback;
  16. import org.opencv.android.CameraBridgeViewBase;
  17. import org.opencv.android.CameraBridgeViewBase.CvCameraViewFrame;
  18. import org.opencv.android.CameraBridgeViewBase.CvCameraViewListener2;
  19. import org.opencv.android.LoaderCallbackInterface;
  20. import org.opencv.android.OpenCVLoader;
  21. import org.opencv.core.Core;
  22. import org.opencv.core.CvType;
  23. import org.opencv.core.Mat;
  24. import org.opencv.imgproc.Imgproc;
  25.  
  26.  
  27. public class MainActivity extends AppCompatActivity implements CvCameraViewListener2 {
  28.  
  29.     //Prefixes for logging success and failure messages
  30.     private static final String TAG = "OCVSample::Activity";
  31.  
  32.     //Loads camera view of OpenCV for us to use. This lets us see using OpenCV
  33.     private CameraBridgeViewBase mOpenCvCameraView;
  34.  
  35.     //Preview Builder which changes exposure (i think)
  36.     private CaptureRequest.Builder mPreviewRequestBuilder;
  37.     private CaptureRequest mPreviewRequest;
  38.     private long exposureTime = 1000,frameDuration = 1000;
  39.     private int sensitivity = 200;
  40.  
  41.     //OPENCV Variables
  42.     Mat matRGBA;
  43.  
  44.     public MainActivity() {
  45.         Log.i(TAG, "Instantiated new " + this.getClass());
  46.     }
  47.  
  48.     @Override
  49.     protected void onCreate(Bundle savedInstanceState) {
  50.         Log.i(TAG, "called onCreate");
  51.         super.onCreate(savedInstanceState);
  52.         getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
  53.         setContentView(R.layout.show_camera);
  54.  
  55.         mOpenCvCameraView = (JavaCameraView) findViewById(R.id.show_camera_activity_java_surface_view);
  56.         mOpenCvCameraView.setVisibility(SurfaceView.VISIBLE);
  57.         mOpenCvCameraView.setCvCameraViewListener(this);
  58.     }
  59.  
  60.     @Override
  61.     public void onPause() {
  62.         super.onPause();
  63.  
  64.         if(mOpenCvCameraView != null) {
  65.             mOpenCvCameraView.disableView();
  66.         }
  67.     }
  68.  
  69.     @Override
  70.     public void onResume() {
  71.         super.onResume();
  72.  
  73.         if(!OpenCVLoader.initDebug()) {
  74.             Log.d(TAG, "Internal OpenCV library not found. Using OpenCV Manager for init");
  75.             OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_3_1_0, this, mLoaderCallback);
  76.         }
  77.         else {
  78.             Log.d(TAG, "OpenCV library found inside package. Using it!");
  79.             mLoaderCallback.onManagerConnected(LoaderCallbackInterface.SUCCESS);
  80.         }
  81.     }
  82.  
  83.     @Override
  84.     public void onDestroy() {
  85.         super.onDestroy();
  86.  
  87.         if(mOpenCvCameraView != null) {
  88.             mOpenCvCameraView.disableView();
  89.         }
  90.     }
  91.  
  92.     private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) {
  93.         @Override
  94.         public void onManagerConnected(int status) {
  95.             switch (status) {
  96.                 case LoaderCallbackInterface.SUCCESS:
  97.                 {
  98.                     Log.i(TAG, "OpenCV loaded successfully");
  99.                     mOpenCvCameraView.enableView();
  100.                 } break;
  101.                 default:
  102.                 {
  103.                     super.onManagerConnected(status);
  104.                 } break;
  105.             }
  106.         }
  107.     };
  108.  
  109.     @Override
  110.     public void onCameraViewStarted(int width, int height) {
  111.         mPreviewRequestBuilder.set(CaptureRequest.CONTROL_AE_MODE, CaptureRequest.CONTROL_AE_MODE_OFF);
  112.         mPreviewRequestBuilder.set(CaptureRequest.SENSOR_EXPOSURE_TIME, Long.valueOf(exposureTime));
  113.         mPreviewRequestBuilder.set(CaptureRequest.SENSOR_SENSITIVITY, Integer.valueOf(sensitivity));
  114.         mPreviewRequestBuilder.set(CaptureRequest.SENSOR_FRAME_DURATION, Long.valueOf(frameDuration));
  115.         matRGBA = new Mat(width, height, CvType.CV_8UC4);
  116.     }
  117.  
  118.     @Override
  119.     public void onCameraViewStopped() {
  120.         matRGBA.release();
  121.     }
  122.  
  123.     @Override
  124.     public Mat onCameraFrame(CvCameraViewFrame inputFrame) {
  125.         matRGBA = inputFrame.rgba();
  126.         return matRGBA;
  127.     }
  128. }
RAW Paste Data
Top