Нажмите, чтобы настроить фокус / экспозицию в CameraX - PullRequest
1 голос
/ 30 мая 2019

Я хотел бы реализовать стандартный UX касания точки в предварительном просмотре, чтобы настроить точки автофокуса и автоэкспозиции в соответствии с местом, где они касались.Я обнаружил функцию Preview.focus (), однако она говорит, что ей нужны размеры в «координатной рамке датчика», которая, как я предполагаю, не совпадает с пиксельными координатами TouchView в TextureView.

Как преобразовать координаты касания предварительного просмотра TextureView в «систему координат датчика», ожидаемую функцией Preview.focus ()?

Было бы замечательно, если бы этот пример был частью примера кода, так как он выглядит как довольно распространенный вариант использования, которого ожидают почти все.

1 Ответ

0 голосов
/ 03 июня 2019

Координаты TextureView не совпадают с координатами датчика. Пожалуйста, ознакомьтесь с примерами кодов здесь (Обратите внимание, что «CameraView» еще не является общедоступным в репозитории maven. Поэтому мы не рекомендуем вам использовать его сейчас). Мы понимаем, что это большая работа, поэтому команда CameraX также разрабатывает более удобную для разработчиков версию API Focus / Metering.

Основной поток, как показано ниже: (1) получить x, y из события касания просмотра. (2) Рассчитайте относительную ориентацию камеры, используя ориентацию устройства и camera2 CameraCharacteristics.SENSOR_ORIENTATION. Значение представляет собой угол по часовой стрелке, на который необходимо повернуть изображение датчика, чтобы оно находилось в вертикальном положении в текущей ориентации устройства.
(3) поменяйте местами x, y на 90/270 градусов и полностью измените x, y по ориентации. поменять местами для зеркалирования (передняя камера) (4) преобразовать в координаты датчика, используя CameraCharacteristics.SENSOR_INFO_ACTIVE_ARRAY_SIZE), просмотреть ширину / высоту.

примечание: для идентификатора камеры, сейчас вы можете найти первый camera_id в mCameraManager.getCameraIdList () с правильной ориентацией объектива. Однако алгоритм может быть изменен.

...