Веб-камера - обнаруживает QR-код, делает снимок и декодирует

В настоящее время я пытаюсь написать программу Java для использования встроенной веб-камеры ноутбука или внешней веб-камеры USB. Мы надеемся, что это будет совместимо как с ПК, так и с Mac.

Мне было интересно, знает ли кто-нибудь о библиотеке, которая может справиться со всем этим? Я действительно не хочу изобретать велосипед, и я понятия не имею, с чего начать: 1) обнаружение веб-камеры, 2) создание снимка при обнаружении QR-кода.

Однако я знаком с ZXing для декодирования изображений штрих-кода.

Я искал повсюду, я сильно подозреваю, что библиотека, которую я ищу, не существует, однако стоит спросить!

Мой первый вопрос здесь, поэтому я надеюсь, что это ясно!

редактировать: в качестве альтернативы, если его не существует, не могли бы вы указать мне правильное направление, как сделать снимок с веб-камеры при обнаружении QR-кода? :)

Спасибо


person chrisby    schedule 06.05.2012    source источник


Ответы (3)


У zxing есть порт на Actionscript, что позволяет использовать его через Flash, который может получить доступ к веб-камере. Порт немного устарел и не на 100% завершен, но должен работать.

person Sean Owen    schedule 06.05.2012
comment
У меня нет опыта работы с actionscript. Насколько он похож на PHP/Java? У меня очень хорошее знание PHP и умеренные способности в Java. - person chrisby; 07.05.2012
comment
На самом деле он больше всего похож на Javascript. Это не очень похоже на Java и, возможно, немного больше похоже на PHP, но на самом деле тоже не похоже. - person Sean Owen; 07.05.2012

В этом примере показано, как читать данные QR-кода с помощью библиотеки Webcam Capture вместе с ZXing. Webcam Capture совместим как с 32-, так и с 64-разрядными версиями Windows, Linux и Mac OX. Для Linux он также поддерживает архитектуру ARM.

Код довольно прост:

Webcam webcam = Webcam.getDefault(); // non-default (e.g. USB) webcam can be used too
webcam.open();

Result result = null;
BufferedImage image = null;

if (webcam.isOpen()) {
    if ((image = webcam.getImage()) == null) {
        continue;
    }

    LuminanceSource source = new BufferedImageLuminanceSource(image);
    BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));
    try {
        result = new MultiFormatReader().decode(bitmap);
    } catch (NotFoundException e) {
        // fall thru, it means there is no QR code in image
    }
}

if (result != null) {
    System.out.println("QR code data is: " + result.getText());
}
person Bartosz Firyn    schedule 24.11.2012

Вы можете использовать gstreamer для взаимодействия с вашей камерой. Для Windows это может быть снова gstreamer или DirectShow. В обоих случаях вам нужно будет захватить ваши данные с помощью некоторых специальных фильтров, в DirectShow это будет SampleGrabber. Я думаю, что gstreamer должен предоставить несколько подобных плагинов.

person AlexTheo    schedule 06.05.2012