Android上不同尺寸的摄像头预览

Android上不同尺寸的摄像头预览,android,android-camera,android-ndk,Android,Android Camera,Android Ndk,我正在开发一个在本机端执行图像处理的应用程序,它从Java端接收每帧的相机数据 问题是,将映像从JVM内存复制到我的本地内存需要很多时间 问题:是否可以使用不同的预览尺寸,即较大的尺寸用于在SurfaceView上显示视频帧,较小的尺寸用于处理。通常,您会使用Camera.Parameters类的setPreviewSize()方法 大概是这样的: ... Camera.Parameters mParams = camera.getParameters(); List<Camera.Siz

我正在开发一个在本机端执行图像处理的应用程序,它从Java端接收每帧的相机数据

问题是,将映像从JVM内存复制到我的本地内存需要很多时间


问题:是否可以使用不同的预览尺寸,即较大的尺寸用于在SurfaceView上显示视频帧,较小的尺寸用于处理。

通常,您会使用
Camera.Parameters
类的
setPreviewSize()
方法

大概是这样的:

...
Camera.Parameters mParams = camera.getParameters();
List<Camera.Size> previewSizes = mParams.getSupportedPreviewSizes();
Camera.Size previewSize = previewSizes.get(previewSizes.size()-1);
mParams.setPreviewSize(previewSize.width, previewSize.height);
mParams.setPreviewFrameRate(15); // get 15 preview frames per second
camera.setParameters(mParams);
...
。。。
Camera.Parameters mParams=Camera.getParameters();
List previewSizes=mParams.getSupportedPreviewSizes();
Camera.Size previewSize=previewSizes.get(previewSizes.Size()-1);
mParams.setPreviewSize(previewSize.width、previewSize.height);
mParams.setPreviewFrameRate(15);//每秒获得15个预览帧
摄像机设置参数(mParams);
...
其中,
camera
是显示图像的摄影机对象


我在SurfaceView的
surfaceChanged
方法中有这一点。这将更改您在捕获相机YUV图像(或位图图像,如果您有幸拥有一部使用它的手机)的
Camera.PreviewCallback
实现中获得的预览大小。它不会影响屏幕上显示的图像。

通常,您会使用
Camera.Parameters
类的
setPreviewSize()
方法

大概是这样的:

...
Camera.Parameters mParams = camera.getParameters();
List<Camera.Size> previewSizes = mParams.getSupportedPreviewSizes();
Camera.Size previewSize = previewSizes.get(previewSizes.size()-1);
mParams.setPreviewSize(previewSize.width, previewSize.height);
mParams.setPreviewFrameRate(15); // get 15 preview frames per second
camera.setParameters(mParams);
...
。。。
Camera.Parameters mParams=Camera.getParameters();
List previewSizes=mParams.getSupportedPreviewSizes();
Camera.Size previewSize=previewSizes.get(previewSizes.Size()-1);
mParams.setPreviewSize(previewSize.width、previewSize.height);
mParams.setPreviewFrameRate(15);//每秒获得15个预览帧
摄像机设置参数(mParams);
...
其中,
camera
是显示图像的摄影机对象


我在SurfaceView的
surfaceChanged
方法中有这一点。这将更改您在捕获相机YUV图像(或位图图像,如果您有幸拥有一部使用它的手机)的
Camera.PreviewCallback
实现中获得的预览大小。它不影响屏幕上显示的图像。

它实际上直接影响屏幕上的图像大小。该示例使用相机支持的最小可能大小。文档表明,它不会影响相机本身的预览,只会影响采集的图像。我从来没有通过过第二大预览尺寸,所以我从来没有完全测试过这种说法。你可以用它做实验。如果(previewSizes.size()>0)previewSizes.get(1)只需缩小一个尺寸,而不是最小尺寸,而不是尽可能地缩小最小尺寸。这实际上会直接影响屏幕上的图像大小。该示例是相机支持的最小尺寸。文档表明,它不会影响相机本身的预览,只会影响采集的图像。我从来没有通过过第二大预览尺寸,所以我从来没有完全测试过这种说法。你可以用它做实验。如果(previewSizes.size()>0)previewSizes.get(1)只需缩小一个尺寸而不是最小的尺寸,而不是尽可能地缩小最小的尺寸。