Почему мой zxing QRcodeReader (java android) на rviz ros декодирует очень медленно и неточно? - PullRequest
0 голосов
/ 04 мая 2020

Я работаю над проектом, согласно которому мой робот должен сканировать QR-код и доставлять вещи по комнате, и у меня возникла проблема с моим QR-декодером, использующим библиотеку Zxing, которая работает очень медленно при первом сканировании. Это займет около 4-5 минут при первом сканировании и около 30 se c после первого в rviz ros из журнала. Я знаю, что проблема в том, что мой бот загружает класс библиотеки из ProxyClass или что-то в этом роде, и у меня есть некоторые ищите и знайте, что всякий раз, когда вы используете внешнюю библиотеку, вы должны использовать загрузчик прокси-классов, поэтому мне нужна идея, которая может ускорить процесс или сделать его более точным, иначе загрузить библиотеку до запуска таймера (я хочу, чтобы мой робот завершил sh загружает библиотеку, прежде чем он go и прочтет QR-код), большое спасибо.

Мне также нужно написать код в Android Studio и создать apk-файл для отправки моего кода профессору. Как вы думаете, я могу прикрепить библиотеку zxing вместе с моим исходным кодом или что-то в этом роде, чтобы восстановить трату времени на процесс декодирования?

и вот мой считыватель QR-кода

    public String myQRcodeReader() {
    Bitmap bMap = //get bitmap image from robot's camera//
    String contents = null;

    int[] intArray = new int[bMap.getWidth() * bMap.getHeight()];
    bMap.getPixels(intArray, 0, bMap.getWidth(), 0, 0, bMap.getWidth(), bMap.getHeight());

    LuminanceSource source = new RGBLuminanceSource(bMap.getWidth(), bMap.getHeight(), intArray);
    BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));

    QRCodeReader reader = new QRCodeReader();
    Result result = null;
    try {
        result = reader.decode(bitmap);
        contents = result.getText();
    } catch (NotFoundException e) {
        e.printStackTrace();
    } catch (ChecksumException e) {
        e.printStackTrace();
    } catch (FormatException e) {
        e.printStackTrace();
    }
    return contents;
}

, и это что консоль говорит в первом декодировании для 100+ строк

Long monitor contention with owner New I/O  worker #9 (2998) at boolean org.ros.concurrent.CircularBlockingDeque.addLast(java.lang.Object)(CircularBlockingDeque.java:72) waiters=1 in void java.lang.Object.wait!() for 156ms
Long monitor contention with owner New I/O  worker #25 (3662) at boolean org.ros.concurrent.CircularBlockingDeque.addLast(java.lang.Object)(CircularBlockingDeque.java:72) waiters=1 in void java.lang.Object.wait!() for 125ms

Большое спасибо.

ps Я использую ros на сервере моего профессора, поэтому ничего не могу с этим поделать .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...