我正在开发一个在本机端执行图像处理的应用程序,它从Java端接收每帧的摄像机数据。
问题是将图像从JVM内存复制到本机内存需要花费很多时间。
问题:是否可以使用不同的预览尺寸,即较大的尺寸在SurfaceView上显示视频帧,而另一个较小的尺寸用于处理。
答案 0 :(得分:0)
通常,您会使用setPreviewSize()
类的Camera.Parameters
方法。
这样的事情:
...
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
是显示图像的Camera对象。
我在SurfaceView的surfaceChanged
方法中有这个。这将改变您在Camera.PreviewCallback
实现中获取的预览大小,该实现捕获相机的YUV图像(如果您有幸拥有使用它的手机,则会改变位图图像)。它不会影响屏幕上显示的图像。