【问题标题】:Android Camera2 - CONTROL_AE_REGIONS not working on Samsung devicesAndroid Camera2 - CONTROL_AE_REGIONS 在三星设备上不起作用
【发布时间】:2017-09-04 14:57:28
【问题描述】:

使用 Android Camera2,我想在计算曝光时使用一个区域来忽略图像的前 25%。我正在使用这个:

// Compute the metering rectangle to ignore the top 25% of the picture:
Rect newRect = new Rect(mActiveArraySize.left, (int) (mActiveArraySize.height() * 0.25), mActiveArraySize.right, mActiveArraySize.bottom);
MeteringRectangle meteringRectangle = new MeteringRectangle(newRect, 1);
MeteringRectangle[] meteringRectangleArr = { meteringRectangle };

// Set the metering rectangle:
mPreviewRequestBuilder.set(CaptureRequest.CONTROL_AE_REGIONS, meteringRectangleArr);

// Set the request:
try { mCaptureSession.setRepeatingRequest(mPreviewRequestBuilder.build(), null, mBackgroundHandler); }
catch (CameraAccessException e) { e.printStackTrace(); }

它在我的 Nexus 5X 上运行。但是在三星 Galaxy Note 5 上(我猜是在所有三星设备上),它不起作用,我的区域被忽略了。

我看到了这个问题:Android Camera2 API - Set AE-regions not working,操作员说他设法通过使用三星 SDK 让它工作。我真的希望避免这种情况。

是否有人设法让 AE 区域使用三星设备?

【问题讨论】:

  • 我也有同样的问题。在包括 LG Nexus 5 在内的 3 部手机上尝试过,但没有成功 :( 顺便问一下,您是否设置了任何 CONTROL_AE_PRECAPTURE_TRIGGER、CONTROL_AE_MODE、CONTROL_AE_LOCK 参数?

标签: android camera2 metering exposure


【解决方案1】:

最近我遇到了同样的问题,终于找到了对我有帮助的解决方案。

我需要做的就是从活动传感器矩形的边缘移动 1 个像素。在您的示例中,而不是这个矩形:

Rect newRect = new Rect(mActiveArraySize.left,
                        (int) (mActiveArraySize.height() * 0.25),
                        mActiveArraySize.right,
                        mActiveArraySize.bottom);

我会用这个:

Rect newRect = new Rect(mActiveArraySize.left + 1,
                        (int)(mActiveArraySize.height() * 0.25),
                        mActiveArraySize.right + 1,
                        mActiveArraySize.bottom - 2);

我从底部减去了2,因为活动数组的最底部像素是mActiveArraySize.height() - 1,我需要再减去一个像素。

看来很多厂商对documentation这部分的实现很差

如果测光区域在捕获结果元数据中返回的使用的 android.scaler.cropRegion 之外,相机设备将忽略裁剪区域之外的部分,仅输出相交矩形作为结果元数据中的测光区域。如果该区域完全在裁剪区域之外,它将被忽略并且不会在结果元数据中报告。

【讨论】:

  • 非常感谢,如果对我有用,我会尝试并接受您的回答!您可能为我节省了数周实施三星 SDK 的工作......
  • 所以,我终于有时间尝试您的解决方案,但没有运气。在三星 Galaxy Note 5 上,活动数组大小为 [0,0][5328,3000]。如果我使用 [1,1000][5326,1500] 的测光区域,它不起作用(它没有效果,曝光仍然是从整个屏幕计算的)。你能告诉我你设法在三星设备上工作的活动阵列大小和计量区域吗?
  • @TimAutin 在三星 A7 上,我从相机特性中得到的传感器矩形是:Rect(0, 0 - 4624, 3466)。然后我裁剪它以将纵横比与可见预览区域对齐,得到:Rect(0, 508 - 4624, 2957)。然后我使用曝光测光区域 Rect(1, 1120 - 4623, 2549) (由于我的应用程序的特殊性,我需要从顶部和底部剪切部分图像)。它似乎对我有用。
猜你喜欢
  • 1970-01-01
  • 2019-01-09
  • 2011-10-28
  • 2014-11-24
  • 1970-01-01
  • 1970-01-01
  • 2013-05-26
  • 2012-07-02
  • 1970-01-01
相关资源
最近更新 更多