【问题标题】:Using Camera LED Flash with OpenCV on Android在 Android 上使用带有 OpenCV 的相机 LED 闪光灯
【发布时间】:2012-04-01 05:03:24
【问题描述】:

我有一个使用 OpenCV for Android 的应用程序,想知道是否可以启用相机的 LED。

目前我的相机使用以下代码设置:

camera = new VideoCapture(Highgui.CV_CAP_ANDROID);

我见过的所有启用 LED 闪光灯的示例都需要 Camera.Parameters,我无法通过此相机设置访问。

是否有任何简单的方法来启用 LED,而无需切换到对我的视频流使用基本的 Camera 类,因为这往往要慢得多。

提前感谢您的帮助。

【问题讨论】:

    标签: java android opencv camera computer-vision


    【解决方案1】:

    如果您使用 JavaCameraView,您可以简单地在 JavaCameraView.java 类的末尾添加两个方法:

    public void turnOffTheFlash() {
        Camera.Parameters params = mCamera.getParameters();
        params.setFlashMode(params.FLASH_MODE_OFF);
        mCamera.setParameters(params);
    }
    
    public void turnOnTheFlash() {
        Camera.Parameters params = mCamera.getParameters();
        params.setFlashMode(params.FLASH_MODE_TORCH);
        mCamera.setParameters(params);
    }
    

    您可以按如下方式在您的活动中运行它们:

    private JavaCameraView javaCameraView;
    
    javaCameraView.turnOnTheFlash();
    
    javaCameraView.turnOffTheFlash();
    

    也许你应该使用 FLASH_MODE_ON 而不是 FLASH_MODE_TORCH。

    它适用于我在 OpenCV 2.4.9 上。

    【讨论】:

      【解决方案2】:

      你可以使用扩展 JavaCameraView

      公共类 Tutorial2View 扩展 JavaCameraView{

      private static final String TAG = "Sample::Tutorial2View";
      
      private Context myreference;
      private static boolean isFlashLightON = false;
      public Tutorial2View(Context context, AttributeSet attrs) {
          super(context, attrs);
          this.myreference = context;
      }
      
      public List<String> getEffectList() {
          return mCamera.getParameters().getSupportedColorEffects();
      }
      
      public boolean isEffectSupported() {
          return (mCamera.getParameters().getColorEffect() != null);
      }
      
      public String getEffect() {
          return mCamera.getParameters().getColorEffect();
      }
      
      public void setEffect(String effect) {
          Camera.Parameters params = mCamera.getParameters();
          params.setColorEffect(effect);
          mCamera.setParameters(params);
      }
      
      public List<Size> getResolutionList() {
          return mCamera.getParameters().getSupportedPreviewSizes();
      }
      
      public void setResolution(Size resolution) {
          disconnectCamera();
          mMaxHeight = resolution.height;
          mMaxWidth = resolution.width;
          connectCamera(getWidth(), getHeight());
      }
      
      public Size getResolution() {
          return mCamera.getParameters().getPreviewSize();
      }
      
      // Setup the camera
      public void setupCameraFlashLight() {
          Camera  camera = mCamera;
          if (camera != null) {
              Parameters params = camera.getParameters();
      
              if (params != null) {
                  if (isFlashLightON) {
                      isFlashLightON = false;
                      params.setFlashMode(Parameters.FLASH_MODE_OFF);
                      camera.setParameters(params);
                      camera.startPreview();
                  } else {
                      isFlashLightON = true;
                      params.setFlashMode(Parameters.FLASH_MODE_TORCH);
                      camera.setParameters(params);
                      camera.startPreview();
      
                  }
              }
          }
      
      }
      

      }

      调用 setupCameraFlashLight();开启关闭 LED 灯

      【讨论】:

      • 感谢分享 =)
      【解决方案3】:

      在 OpenCV for Android 2.4 中,您可以这样做,

      mCamera.set(
        Highgui.CV_CAP_PROP_ANDROID_FLASH_MODE,
        Highgui.CV_CAP_ANDROID_FLASH_MODE_ON
      );
      

      其他选项有:CV_CAP_ANDROID_FLASH_MODE_AUTOCV_CAP_ANDROID_FLASH_MODE_OFFCV_CAP_ANDROID_FLASH_MODE_TORCHCV_CAP_ANDROID_FLASH_MODE_REDEYE

      但是,使用它会导致应用程序在我的平板电脑 (Asus TF101) 上自动关闭。希望它适用于其他人。

      【讨论】:

      • 干杯,我在 Android 2.3 上使用 OpenCV,但会在 2.4 上尝试。
      【解决方案4】:

      似乎没有简单的方法可以做到这一点。唯一的选择是使用默认的 Android Camera 类并稍微降低性能。

      【讨论】:

        猜你喜欢
        • 2011-04-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-02-26
        相关资源
        最近更新 更多