2012-03-15 221 views
3

我有一款使用OpenCV的Android应用程序,并且想知道是否可以启用摄像头的LED。在Android上使用OpenCV上的摄像头LED闪光灯

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

camera = new VideoCapture(Highgui.CV_CAP_ANDROID);

我见过的所有实例使LED闪光灯需要Camera.Parameters我没有与此相机设置访问权限。

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

感谢您提前提供任何帮助。

回答

4

在OpenCV的为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

但是,使用这会导致应用程序自动关闭我的平板电脑(华硕TF101)。希望它对别人有用。

+0

干杯,我使用Android 2.3的OpenCV,但会尝试这与2.4。 – woodstock365 2012-05-26 23:23:57

2

看来有没有简单的方法来做到这一点。唯一的选择是使用默认的Android相机类,并采取轻微的表现。

4

您可以使用扩展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();到ON OFF LED灯

+0

感谢您分享=) – AuroraBlaze 2015-05-26 02:08:19

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(); 

Mayby你应该使用FLASH_MODE_ON而不是FLASH_MODE_TORCH。

它适用于我的OpenCV 2.4.9。

相关问题