2012-03-15 70 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。

相關問題