Android 如何获取720p安卓摄像头预览数据?

Android 如何获取720p安卓摄像头预览数据?,android,resolution,android-camera,preview,Android,Resolution,Android Camera,Preview,我想使用相机预览进行图像识别。为了我的 因此,我需要预览分辨率尽可能高 (同时,向用户显示预览) 我创建了一个预览类,扩展了SurfaceView并设置了 预览大小为1280x720。我添加了一个预览回调以获得实况转播 图片: 我的字节数组b是1382400字节,我的 onPreviewFrame()函数接收那些1382400 字节-但只有前497664字节包含数据(与 768x432分辨率(HTC) 我在不同的设备上进行了测试,所有设备的显示分辨率都为 800x480(HTC Desire、L

我想使用相机预览进行图像识别。为了我的 因此,我需要预览分辨率尽可能高 (同时,向用户显示预览)

我创建了一个预览类,扩展了SurfaceView并设置了 预览大小为1280x720。我添加了一个预览回调以获得实况转播 图片:

我的字节数组b是1382400字节,我的 onPreviewFrame()函数接收那些1382400 字节-但只有前497664字节包含数据(与 768x432分辨率(HTC)

我在不同的设备上进行了测试,所有设备的显示分辨率都为 800x480(HTC Desire、LG Optimus 3D、三星Galaxy S2、三星Galaxy 选项卡…)。我的代码工作的唯一设备是HTC Desire HD

有人知道如何以字节形式接收完整的720p分辨率吗 阵列? “某物”似乎降低了预览分辨率以适应智能手机的显示

问候


Joern

相机预览不能使用任何随机分辨率

某些设备仅支持某些分辨率。您可以通过ª查询这些信息。如果您的设备未在此列表中返回
1280x720
,则无法使用它。请选择一个与所需分辨率接近的受支持分辨率


在使用任何分辨率(720p或非720p)之前,您通常都应该这样做。虽然这是一个老问题,但答案是不变的:每个设备支持的预览大小列表并不准确。据我所知,默认预览大小始终有效。其他尺寸看起来最多只能根据具体情况而定-您可以有理由相信默认预览尺寸在屏幕上看起来不会不正确,但仅此而已。特别是,即使“支持”了较大的图像格式,该字节数组也无法缩放以适应较大的图像格式,并且只有一些“支持”的预览大小能够以分辨率正确渲染,并且不会出现绿色/粉色失真


要知道分辨率是否正确以及onPreviewFrame()中的数据是否良好,唯一可靠的方法是手动进行测试。

您确定您的手机支持720p吗?Logcat是否有任何说明(如“无法设置分辨率”)?是的,所有设备都支持720p作为预览大小。Logcat没有说什么特别的-它看起来像是“某物”无声地降低了预览分辨率。getPreviewSize()是否返回了正确的大小?只是根据我的愿望测试了一下,可以验证一下。预览大小是受支持的,并且可以正常工作,但是返回的预览数据较小,如下所述。非常奇怪。(不幸的是)每个列出的设备列表中都有1280x720p。我检查了SupportedPreviewSizes。
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()
}