ZXing на Android - очень медленно декодирует производительность - PullRequest
4 голосов
/ 18 марта 2012

Как видно из названия, я пытаюсь декодировать QR-коды на устройстве Android с помощью приложения ZXing Barcode Scanner.Я прочитал несколько тем в Интернете о том, как не рекомендуется интегрировать приложение в собственный проект.Вместо этого следует использовать IntentIntegrator.

Однако в моем случае это не вариант.Ниже приведен фрагмент кода, который я вызываю для каждого кадра камеры.

LuminanceSource source = new RGBLuminanceSource(bitmap);
BinaryBitmap bm = new BinaryBitmap(new HybridBinarizer(source));

try {
    Result result = reader.decode(bm); // This line takes approx. 6seconds
    if (!result.getText().isEmpty()) {
        Log.e("MYTAG", "Found something: "+result.getText());
    }
}
catch (NotFoundException e) {
    e.printStackTrace();
} catch (ChecksumException e) {
    e.printStackTrace();
} catch (FormatException e) {
    e.printStackTrace();
}

Как я уже сказал, этот процесс очень медленный.Декодирование занимает от 5 до 8 секунд.

Я пытался использовать MultiFormatReader и QRCodeReader.

Может кто-нибудь пролить свет на объект?

Ответы [ 4 ]

8 голосов
/ 29 мая 2015

Оказывается, производительность сильно страдает от отладчика Android, подключенного к приложению. Приблизительное время, необходимое для сканирования полнокадрового изображения камеры на HTC Desire HD, составляет около 150-200 мс. Глупая ошибка с моей стороны.

1 голос
/ 18 марта 2012

Именно поэтому вы хотите сканировать с помощью Intent - без кодирования и отладки, и вы сканируете оптимально.

Здесь я представляю, что вы передаете ему полный 5-мегапиксельный образ или что-то в этом роде. Не делай этого.

1 голос
/ 18 марта 2012

Я использую ZXing только через намерение, и это очень быстро - чтобы бросить здесь идею: возможно, входное изображение слишком велико - возможно, уменьшите размер перед тем, как выбросить его в декодер.

0 голосов
/ 12 июля 2012

Производительность декодирования также будет зависеть от скорости процессора вашего телефона. Для данного телефона / планшета производительность не будет превышать определенной точки, поскольку эта библиотека работает на ARM / ACPU.

Возможно, вам придется поработать над оптимизацией вашего приложения. Кроме того, вы можете:

  1. Используйте метод намерения, чтобы потоки были другими.

  2. Попробуйте передать изображение с более низким разрешением, чтобы обработка изображения не заняла много ресурсов ЦП.

  3. Сохраняйте постоянный наклон ИЛИ старайтесь держать параллельную плоскость между телефоном и наклейкой со штрих-кодом / распечатанной страницей.

...