Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Android上使用带OpenCV的摄像头LED闪光灯_Java_Android_Opencv_Camera_Computer Vision - Fatal编程技术网

Java 在Android上使用带OpenCV的摄像头LED闪光灯

Java 在Android上使用带OpenCV的摄像头LED闪光灯,java,android,opencv,camera,computer-vision,Java,Android,Opencv,Camera,Computer Vision,我有一个使用OpenCV for Android的应用程序,我想知道是否可以启用摄像头的LED 目前,我的相机是使用以下代码设置的: camera=newvideocapture(Highgui.CV\u CAP\u ANDROID) 我看到的所有启用LED闪光灯的示例都需要Camera.Parameters,我无法使用此摄像机设置访问这些参数 对于我的视频流,是否有任何简单的方法可以在不切换到使用基本摄像头的情况下启用LED,因为这往往要慢得多 感谢您事先提供的帮助。似乎没有简单的方法可以做到

我有一个使用OpenCV for Android的应用程序,我想知道是否可以启用摄像头的LED

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

camera=newvideocapture(Highgui.CV\u CAP\u ANDROID)

我看到的所有启用LED闪光灯的示例都需要
Camera.Parameters
,我无法使用此摄像机设置访问这些参数

对于我的视频流,是否有任何简单的方法可以在不切换到使用基本
摄像头的情况下启用LED,因为这往往要慢得多


感谢您事先提供的帮助。

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

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

mCamera.set(
  Highgui.CV_CAP_PROP_ANDROID_FLASH_MODE,
  Highgui.CV_CAP_ANDROID_FLASH_MODE_ON
);
其他选项有:
CV\u CAP\u ANDROID\u FLASH\u MODE\u AUTO
CV\u CAP\u ANDROID\u FLASH\u MODE\u OFF
CV\u CAP\u ANDROID\u FLASH\u MODE\u TORCH
CV\u CAP\u ANDROID\u FLASH\u redye


但是,使用此选项会导致应用程序在我的平板电脑(Asus TF101)上自动关闭。希望它能对其他人起作用。

您可以使用extends JavaCameraView

公共类教程2View扩展了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();

            }
        }
    }

}
private static final String TAG=“Sample::Tutorial2View”;
私有上下文引用;
私有静态布尔值isFlashLightON=false;
公共教程2视图(上下文、属性集属性){
超级(上下文,attrs);
this.myreference=上下文;
}
公共列表getEffectList(){
返回mCamera.getParameters().getSupportedColorEffects();
}
公共布尔值受支持(){
返回值(mCamera.getParameters().getColorEffect()!=null);
}
公共字符串getEffect(){
返回mCamera.getParameters().getColorEffect();
}
公共无效设置效果(字符串效果){
Camera.Parameters params=mCamera.getParameters();
参数setColorEffect(效果);
mCamera.setParameters(参数);
}
公共列表getResolutionList(){
返回mCamera.getParameters().getSupportedPreviewSizes();
}
公共空间分辨率(大小分辨率){
断开摄像头();
mMaxHeight=分辨率.height;
mMaxWidth=分辨率.width;
连接摄像头(getWidth(),getHeight());
}
公共大小getResolution(){
返回mCamera.getParameters().getPreviewSize();
}
//设置相机
公共空间设置照相机手电筒(){
摄像机=mCamera;
如果(照相机!=null){
Parameters params=camera.getParameters();
如果(参数!=null){
如果(iFlashlighton){
isFlashLightON=false;
参数设置闪光模式(参数:闪光模式关闭);
摄像机。设置参数(参数);
camera.startPreview();
}否则{
isFlashLightON=true;
参数设置闪光模式(参数闪光模式);
摄像机。设置参数(参数);
camera.startPreview();
}
}
}
}
}


调用setupCameraFlashLight();要打开或关闭LED灯

如果使用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();
也许你应该使用闪光模式,而不是闪光模式


它适用于我在OpenCV 2.4.9上的应用。

干杯,我曾在Android 2.3上使用OpenCV,但将在2.4上试用。谢谢分享=)