当前位置:  开发笔记 > Android > 正文

如何获得720p Android Camera预览数据?

如何解决《如何获得720pAndroidCamera预览数据?》经验,为你挑选了1个好方法。

我想使用相机预览进行图像识别.出于我的目的,我需要尽可能高的预览分辨率(同时,向用户显示预览).

我创建了一个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,三星Galaxy S2,三星Galaxy Tab,......).我的代码唯一适用的设备是HTC Desire HD.

有谁知道如何作为字节数组获得完整的720p分辨率?"Something"似乎降低了预览分辨率以适应智能手机显示屏.

问候

Joern



1> 小智..:

您无法使用任何随机分辨率进行相机预览.

某些设备仅支持某些分辨率.你可以通过Camera.Parameters.getSupportedPreviewSizes()¹ 查询这些.如果您的设备未1280x720在此列表中返回,则无法使用它.选择一个支持的分辨率,而不是您想要的分辨率.

¹ 在使用任何720p或更高分辨率之前,您应该这样做


(不幸的是)1280x720p在每个列出的设备的列表中.我检查了SupportedPreviewSizes.
推荐阅读
wurtjq
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有