首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从com.google.android.gms.vision.CameraSource访问摄像机并增加/降低预览亮度

从com.google.android.gms.vision.CameraSource访问摄像机并增加/降低预览亮度
EN

Stack Overflow用户
提问于 2018-04-10 11:52:54
回答 1查看 3.4K关注 0票数 5

我必须在Google的CameraSource中实现,以构建摄像机,并在获取图像之前对其进行人脸检测。现在我面临的问题不多,所以我需要从CameraSource访问相机对象。

  1. 如何使用CameraSource实现增加或降低相机预览亮度?

这是我的CameraSource生成器

代码语言:javascript
运行
复制
 mCameraSource = new CameraSource.Builder(context, detector)
                .setRequestedPreviewSize(640, 480)
                .setFacing(CameraSource.CAMERA_FACING_FRONT)
                .setRequestedFps(30.0f)
                .build();

在这里,我必须尝试从mCameraSource对象访问/获取相机。

代码语言:javascript
运行
复制
Field[] declaredFields = CameraSource.class.getDeclaredFields();

        for (Field field : declaredFields) {
            if (field.getType() == Camera.class) {
                field.setAccessible(true);
                try {
                    Camera camera = (Camera) field.get(mCameraSource);
                    if (camera != null) {
                        Camera.Parameters params = camera.getParameters();                        
                        params.setExposureCompensation(1500);
                        camera.setParameters(params);
                    }
                } catch (IllegalAccessException e) {
                    e.printStackTrace();
                }

            }
        }

但是camera只返回null,我的第二个问题是如何做亮度选项.

代码语言:javascript
运行
复制
if (camera != null) {
     Camera.Parameters params = camera.getParameters();                        
     params.setExposureCompensation(1500);
     camera.setParameters(params);
 }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-11 06:11:43

我必须像这样实现我的目标,

摄像机亮度为-12至12,所以最低亮度为- 12,最大亮度为12。

现在,我必须自定义CameraSourcePreview构造函数,如

代码语言:javascript
运行
复制
private int defaultBrightness = 12;

public CameraSourcePreview(Context context, AttributeSet attrs) {
    super(context, attrs);
    mContext = context;
    mStartRequested = false;
    mSurfaceAvailable = false;

    mSurfaceView = new SurfaceView(context);
    mSurfaceView.getHolder().addCallback(new SurfaceCallback());
    addView(mSurfaceView);
    mSurfaceView.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            cameraFocus(mCameraSource, brightness);
        }
    });
}

private static boolean cameraFocus(@NonNull CameraSource cameraSource, int brightness) {
    Field[] declaredFields = CameraSource.class.getDeclaredFields();

    for (Field field : declaredFields) {
        if (field.getType() == Camera.class) {
            field.setAccessible(true);
            try {
                Camera camera = (Camera) field.get(cameraSource);
                if (camera != null) {
                    Camera.Parameters params = camera.getParameters();
                        params.setExposureCompensation(brightness);
                    camera.setParameters(params);
                    return true;
                }

                return false;
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            }

            break;
        }
    }

    return false;
}

然后通过查找条实现动态亮度调整。

喜欢

代码语言:javascript
运行
复制
seekbar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
            @Override
            public void onProgressChanged(SeekBar seekBar, int i, boolean b) {


                cameraFocus(mCameraSource,i-12);
            }

            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {
            }

            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {
            }
        });

查找条xml代码

代码语言:javascript
运行
复制
<SeekBar
            android:id="@+id/seekBar1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:max="24"
            android:layout_gravity="center_vertical"/>

我终于找到了解决办法..。:)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49752955

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档