Подтвердить что ты не робот

Автофокус: выберите точку фокусировки

Приложение для камеры, которое поставляется вместе с HTC Desire HD, позволяет пользователю коснуться экрана в тот момент, когда они хотят сосредоточиться; вокруг области появляется ограничивающий индикатор, и автофокус делает свою магию. Таким образом, захваченное изображение может иметь дальнюю точку в правом верхнем углу и ближайшую точку в левом нижнем углу, при этом пользователь может выбрать, какой из них находится в фокусе, прежде чем делать снимок.

Мне было предложено создать приложение, которое позволит пользователю выбрать интересующую область после съемки, очевидно, было бы хорошо, если бы этот регион был в фокусе, прежде чем делать снимок, как описано выше.

Мое приложение до сих пор делает объект автофокуса в центре изображения, но я не могу найти ссылки на выбор региона для фокусировки в любой документации. Любые идеи.

4b9b3361

Ответ 1

То, что вы запрашиваете, - это ручная фокусировка.

Сделать это с помощью Android SDK сейчас невозможно на сегодняшний день. Вам необходимо установить фокусное расстояние на камеру. Но если вы видите SDK камеры для Android, вы бы заметили, что есть API для получения фокуса, но не для его установки.

Все рыночные приложения, которые говорят, что это ручная фокусировка, неверны, вы можете запустить свой простой эксперимент, чтобы проверить это. Держите дальний и ближний объект в предварительном просмотре камеры и последовательно пытайтесь сфокусировать дальний и ближний объект, когда фокус находится на дальнем объекте, тогда ближний объект должен быть размытым и когда фокус находится на ближнем объекте, тогда дальний объект должен быть размытым.., которого не будет с рыночными приложениями. (Я попробовал пару, если вы найдете тот, который действительно делает это, тогда дайте мне знать:))

Но если вы делаете OEM-приложение (где у вас есть встроенный BSP с вами для устройства), то да, это можно сделать (как приложение, о котором вы упоминали). И вот как они это делают (Примечание. Эти шаги могут быть не исчерпывающими, но это даст вам идею..)

  • Когда пользователь удаляет поверхность предварительного просмотра, получают координаты (область окна.)
  • Затем он подается на фокусирующий алгоритм, который в основном делает
    • Принимает область окна и данные предварительного просмотра.
    • Пытается найти края в данных предварительного просмотра
    • Регулирует фокусное расстояние, чтобы получить более резкие края (это когда вы можете видеть в предварительном просмотре, что происходит некоторое масштабирование)
    • Он определяет наилучшее фокусное расстояние, которое дает ему острые края в поле и возвращает
  • Теперь приложение говорит, что это сфокусировано, и вуала была достигнута ручная фокусировка.

Ответ 3

Cyanogenmod просто добавил это в свое приложение для камеры - вы можете посмотреть на изменения, которые они там сделали. Соответствующий патч: http://review.cyanogenmod.com/#change,6487