CameraXでオートフォーカス

提供: MonoBook
ナビゲーションに移動 検索に移動

.NET6 Android(旧:Xamarin.Android)でCameraXの話。

FocusMeteringActionに計測位置だけを指定すると以下の三点セットとなっている。

  • オートフォーカス(Auto Focus、AF)
  • オート露出(Auto Exposure、AE)
  • オートホワイトバランス(Auto White Balance、AWB)
// AndroidX.Camera.Core.ICamera camera

if (camera.CameraInfo.IsFocusMeteringSupported(focusAction) == false)
    return;

var focusPoint = meteringPointFactory.CreatePoint(x, y);

var focusAction = new FocusMeteringAction.Builder(focusPoint)
    .SetAutoCancelDuration(3, TimeUnit.Seconds)
    .Build();

camera.CameraControl.StartFocusAndMetering(focusAction);

ホワイトバランスが毎回調整されるのはなかなか意味がわからない。

白紙などを映しながらホワイトバランスだけを自動調整するにはAFとAEを切る。 専用のホワイトバランス調整モードを搭載しとけ。

var focusAction = new FocusMeteringAction.Builder(
    focusPoint, 
    FocusMeteringAction.FlagAwb);

ホワイトバランスを変えずにAEとAFだけにしたいは以下のようにする。

var focusAction = new FocusMeteringAction.Builder(
    focusPoint, 
    FocusMeteringAction.FlagAe | FocusMeteringAction.FlagAf);