Android图像处理快速获取图像数据

时间:2011-10-23 19:26:29

标签: android image

我正在创建一个Android应用程序来使用相机执行一些图像处理技术,它需要快速。这是整个系统如何工作的伪代码:

1. loop while not finished
   1.1 get image frame
   1.2 process image for object detection
2. end loop

我实际上对Camera类的基础知识有疑问:

  1. 是否比没有预览更快地预览来自相机的感知图像?前者意味着使用SurfaceView来预览图像。
  2. 假设从takePicture()方法开始,可以在没有预览的情况下获取图像数据数组吗?
  3. 我真正的问题是,在处理图像后(如上所述)快速迭代地获取图像数据(例如,byte[]数组)的最佳方法是什么?

    我计划使用takePicture()方法来获取图片数据,但如果这是唯一的方法或其他更好的方法,我需要您的意见。

1 个答案:

答案 0 :(得分:2)

您可以将SurfaceView设置为相机的预览显示,并使用PreviewCallback获取每个预览帧的数据。如果您不需要takePicture捕获的高分辨率,这将比使用takePicture更好。换句话说,如果您想以更快的速度捕获质量较低的图像,请使用PreviewCallback ...如果您想以非常慢的速度捕获更高质量的图像,请使用takePicture。

至于你的问题,我不认为你可以不使用预览显示拍照,但我可能是错的。

class MainActivity extends Activity implements Camera.PreviewCallback, SurfaceHolder.Callback  {
  ...

  public void surfaceCreated(SurfaceHolder holder)  {
    camera = Camera.open();
    camera.setPreviewCallback(this);
    ...
  }

  public void onPreviewFrame(byte[] data, Camera camera) {
    // image data contained in data... do as you wish
  }
}