Android 5.0 Неверные области посева на поверхности предварительного просмотра и снятые неподвижные изображения

Я пытаюсь получить цифровую масштабированную рамку на Android 5.0 с помощью интерфейса camera2. Соответствующим документом для этой функциональности является developer.android.com/camera2/captureRequest

Поверхность, используемая в моей заявке:

  • SurafaceView (соотношение сторон 1920×1080, 16: 9)
  • ImageReader (3264×2448, соотношение сторон 4: 3)

Размер сенсора камеры составляет 3280×2464 (соотношение сторон 4: 3)

Область обрезки, которую я хочу получить от датчика:

Rect zoomCropPreview = new Rect(1094, 822, 2186, 1642); //(1092x820, 4:3 aspect ratio) 

Я установил этот Rect в качестве параметра для запроса предварительного просмотра:

 previewRequestBuilder.set(CaptureRequest.SCALER_CROP_REGION, zoomCropPreview); captureSession.setRepeatingRequest(previewRequestBuilder.build(), null, null); 

И взять неподвижное изображение:

 stillRequestBuilder.set(CaptureRequest.SCALER_CROP_REGION, zoomCropPreview); captureSession.capture(stillRequestBuilder.build(), new captureListener() , null); 

Ожидаемые результаты:

  • Угол усечения урожая равен 4: 3, тогда предварительный просмотр должен быть обрезан вертикально (почтовый ящик)
  • Еще изображение должно быть точным участком.
  • Как предварительный просмотр, так и неподвижное изображение должны быть сосредоточены на одной и той же точке сцены и должны отличаться только вертикальными краями.

Реальный результат:

  • Предварительный просмотр и неподвижное изображение на другой сцене, которая, по-видимому, перемещается по вертикали. Посмотрите на прикрепленные изображения. Предварительная поверхность

Захваченное неподвижное изображение

Что я делаю не так?

Исправлена! Общая идея состоит в том, чтобы рассчитать область посева для предварительного просмотра и неподвижных изображений отдельно.

1) Рассчитайте область кадрирования для неподвижного изображения, как в исходном столбце (используйте прямоугольник 4: 3)

2) Для предварительного просмотра возьмите область урожая (4: 3) и уменьшите вертикальный размер, чтобы получить прямоугольник 16: 9.

Intereting Posts
Как протестировать приложение Android Wear для Android? Вычислить подшипник компаса / заголовок для местоположения в Android Идеи источника QualcommCameraHardware native_get_picture: MSM_CAM_IOCTL_GET_PICTURE Ошибка времени ожидания подключения? Показать и скрыть панель действий при прокрутке содержимого пейджера Отправка сообщения через WhatsApp. Как установить пользовательский шрифт для списка андроидов? Пустое название в панели действий Групповой клик-прослушиватель в раскрывающемся списке просмотра Android Android: как сделать дочерний вид перекрытием родителя? ActionBarSherlock – Показать переполненные элементы действия как значок + текст Проблема при удалении библиотеки supportV4 Задержка libGDX в течение нескольких секунд Пользовательское поведение режима контекстного действия Получить список установленных приложений, которые можно запустить Android / Java: конвертировать любую строку в цвет (шестнадцатеричный)