Как получить данные предварительного просмотра камеры Android в формате 720p?

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

Я создал класс Preview, расширяющий SurfaceView, и установил для него значение PreviewSize на 1280x720. Я добавил PreviewCallBack, чтобы получить живое изображение:

camera = Camera.open();

parameters = camera.getParameters();
parameters.setPreviewSize(1280,720);

camera.setParameters( parameters);
byte[] b = new byte[camera.getParameters().getPreviewSize().width *
  camera.getParameters().getPreviewSize().height *
  ImageFormat.getBitsPerPixel(camera.getParameters().getPreviewFormat()) / 8];
camera.addCallbackBuffer(b);
camera.setPreviewCallbackWithBuffer(new CameraPreviewCallback());

try {
 camera.setPreviewDisplay(this.getHolder());
 camera.startPreview()
}

Мой массив байт b имеет размер 1382400 байт, а мой функция CameraPreviewCallback.onPreviewFrame() получает эти 1382400 байт. байтов - но только первые 497664 байта содержат данные (соответствующие разрешению 768x432 (HTC Desire)).

Я тестировал это на разных устройствах, все с разрешением дисплея 800x480 (HTC Desire, LG Optimus 3D, Samsung Galaxy S2, Samsung Galaxy Tab, ...). Единственное устройство, на котором работает мой код, это HTC Desire HD.

Кто-нибудь знает, как получить полное разрешение 720p в виде массива байтов? Массив? "Что-то", похоже, уменьшает разрешение предварительного просмотра, чтобы подогнать его под дисплей смартфона.

Regards

Joern

9
задан Jörn Buitink 5 December 2011 в 12:43
поделиться