CameraXでオートフォーカス
2023年11月9日 (木) 01:43時点におけるAdministrator (トーク | 投稿記録)による版
.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);