【发布时间】:2011-12-05 12:43:36
【问题描述】:
我想使用相机预览进行图像识别。对于我的 目的,我需要预览分辨率尽可能高 (同时,向用户显示预览)。
我创建了一个 Preview 类,扩展 SurfaceView 并设置 预览大小为 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 擎天柱 3D、三星 Galaxy S2、三星 Galaxy 标签, ...)。我的代码适用的唯一设备是 HTC Desire HD。
有谁知道如何以字节形式接收完整的 720p 分辨率 大批? “某事”似乎降低了预览分辨率以适应智能手机的显示。
问候
乔恩
【问题讨论】:
-
您确定您的手机支持 720p 吗? Logcat 有没有说什么(比如“无法设置分辨率”)?
-
是的,所有设备都支持 720p 作为预览大小。 Logcat 并没有说什么特别的东西——它看起来像是“某事”默默地降低了预览分辨率。
-
getPreviewSize() 是否返回正确的尺寸?
-
刚刚根据我的意愿测试了这个,可以验证这一点。预览大小受支持且有效,但返回的预览数据较小,如此处所述。很奇怪。
标签: android resolution android-camera preview