Quiero usar la vista previa de la cámara para el reconocimiento de imágenes. Para mis propósitos , necesito que la resolución de vista previa sea lo más alta posible (y, al mismo tiempo, mostrar la vista previa al usuario).¿Cómo obtener 720p Android Camera Preview Data?
Creé una clase de vista previa, extendiendo SurfaceView y estableciendo el PreviewSize en 1280x720. He añadido una PreviewCallBack para obtener el vivo Image:
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()
}
Mi Byte Array B es 1.382.400 bytes y mi función CameraPreviewCallback.onPreviewFrame() recibe esos 1382400 Bytes - pero sólo el primer byte contiene datos 497664 (coincidente una resolución 768x432 (HTC Desire)).
He probado esto en diferentes dispositivos, todo ello con resoluciones de pantalla de 800x480 (HTC Desire, LG Optimus 3D, Samsung Galaxy S2, Samsung Galaxy Tab , ...). El único dispositivo para el que trabaja mi Código es un HTC Desire HD.
¿Alguien sabe cómo recibir la resolución completa de 720p como una matriz Byte ? "Algo" parece reducir la resolución de vista previa para adaptarse a la pantalla del teléfono inteligente.
Saludos
Joern
¿Está seguro de que su teléfono admite 720p? ¿Logcat dice algo (como "no se puede establecer la resolución")? – Lennart
Sí, 720p es compatible con todos los dispositivos como tamaño de vista previa. Logcat no dice nada especial: parece que "algo" reduce la resolución de vista previa en silencio. –
¿getPreviewSize() devuelve el tamaño correcto? – Lennart