Android-обработка изображений позволяет быстро получать данные изображений - PullRequest
0 голосов
/ 23 октября 2011

Я создаю приложение для 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() можно ли получить массив данных изображения без предварительного просмотра?

Мой реальный вопрос заключается в том, каков наилучший способ получения данных изображения (скажем, byte[] массив) быстро и итеративно после обработки изображения (как указано сверху)?

Я планировал использовать метод takePicture() для получения данных изображения, но мне нужно ваше мнение, если это единственный способ или есть другие лучшие способы.

1 Ответ

2 голосов
/ 24 октября 2011

Вы можете настроить 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
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...