我想使用相机预览进行图像识别.为了我的
目的,我需要尽可能高的预览分辨率
(同时,向用户显示预览).
我创建了一个Preview类,扩展了SurfaceView并设置了
PreviewSize到1280×720.我添加了一个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字节包含数据(匹配a
768×432分辨率(HTC Desire)).
我在不同的设备上测试了它,所有设备的显示分辨率都是
800×480(HTC Desire,LG Optimus 3D,三星Galaxy S2,三星Galaxy
标签, …).我的代码唯一适用的设备是HTC Desire HD.
有谁知道如何作为字节接收完整的720p分辨率
阵列?
“Something”似乎降低了预览分辨率以适应智能手机显示屏.
问候
Joern