我希望使用相机预览进行图像识别。为了我的目的,我需要预览分辨率尽可能高(同时向用户显示预览)。
我创建了一个继承SurfaceView类并设置PreviewSize为1280x720的Preview类。我添加了一个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分辨率作为字节数组接收吗? “某些东西”似乎会减小预览分辨率以适应智能手机屏幕。 祝好。Joern