我有一个使用OpenCV for Android的应用程序,并想知道是否可以启用相机的LED。
目前我的相机使用以下代码进行设置:
camera = new VideoCapture(Highgui.CV_CAP_ANDROID);
我所看到的启用LED闪光灯的所有示例都需要Camera.Parameters
我无法通过此相机设置访问。
有没有简单的方法来启用LED而不切换到我的视频流使用基本Camera
类,因为这往往要慢得多。
感谢您提前提供任何帮助。
答案 0 :(得分:4)
在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_AUTO
,CV_CAP_ANDROID_FLASH_MODE_OFF
,CV_CAP_ANDROID_FLASH_MODE_TORCH
和CV_CAP_ANDROID_FLASH_MODE_REDEYE
。
然而,使用此功能会导致应用程序在我的平板电脑上自动关闭(华硕TF101)。希望它适用于其他人。
答案 1 :(得分:4)
您可以使用extends JavaCameraView
public class 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灯
答案 2 :(得分:2)
似乎没有简单的方法可以做到这一点。唯一的选择是使用默认的Android Camera类并略微降低性能。
答案 3 :(得分:2)
如果您使用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。