Web-камера со сканером qr-кодов

Для работы с компонентой требуется зарегистрировать ее в реестре для COM-взаимодействия. Сборка собрана под х32 (Microsoft Framework v2.0.50727). Этот момент следует учитывать при регистрации сборки в х64 системах, где параллельно существуют обе версии Framework. Все файлы примера доступны в архиве для скачивания и расположены в трех папках:

dll-com (файлы компонента для регистрации и библиотеки, а так же пример регистрации в файле register_me_32.bat )

WebCameraPlayerAxCtrl (исходные файлы проекта компонента для MS VS 2010)

Пример работы веб-камеры (файл внешней обработки для 1С где приведен пример работы с видеокамерой)

Сборка не подписана, поэтому при регистрации следует указывать параметр "/codebase" для задания пути в реестре, по которому следует искать сборку.

Кратко о принципах работы с компонентой:

На форме размещаем элемент управления ActiveX: "WebCameraPlayerAxCtrl.WebCameraPlayerControl"

для элемента управления необходимо назначить обработчки событий:

CustomingSizeVideoSourceInTargetWindowEventTrue (позволяет "подогнать" размер экрана видеокамеры на форме, под текущее разрешение камеры. Данные о видимой области изображения веб-камеры находятся в свойствах компонента frame_VisibleClipBoundsWidthframe_VisibleClipBoundsHeight)

QRCodeToPlaintTextEventTrue (срабатывает при удачном декодировании qr-кода с изображения веб-камеры, расшифрованный текст расположен в свойстве компонента PlaintTextQRCode)

ImageToBase64StringEventTrue (срабатывает после вызова метода компонента GetCurrentImage(), после того как компонент сохраняет в свойстве CurrentImageToSaveBase64 , текущее, на момент вызова метода, изображение, полученное с веб-камеры; хранится изображение в строковом формате Base64)

BarCodeImageToSaveBase64EventTrue (срабатывает после вызова метода компонента GetBarCodeImage(ТекстДляКодирования, 12),   Base64-версия картинки qr-кода хранится в свойстве компонента BarCodeImageToSaveBase64. 12 - это код выбора конструктора ZXing, который отвечает за кодирование текста в QR-формат. Коды других вариантов кодирования можно посмотреть в исходных файлах проекта.)

Метод StopCurrentVideoSource() компонента, стоит вызывать перед закрытием формы обработки, где расположен компонент, для корректного отключения от видеопотока.


Ссылки на проекты исходных кодов:

http://zxingnet.codeplex.com/   (библиотека для работы со штрих-кодами)

http://stackoverflow.com/  (собственно здесь был найден пример ActiveX-компонента и работа с событиями при регистрации .NET сборок для COM-взаимодействия)

http://www.aforgenet.com/  (библиотека для работы с видеопотоками)

P.S.: перед регистрацией компонента стоит предварительно подключить к компьютеру камеру (реальную или виртуальную).

Скриншоты


Размещаем изображение перед веб-камерой

Инициализируем веб-камеру

Подключаемся к выбранной веб-камере

Получаем текст из qr-кода веб-камеры

Сохраняем понравившуюся картинку

Сохраненное с веб-камеры изображение

Создаем свой qr-код

Сохраняем изображение qr-кода в файл

Проверяем корректность сохраненного qr-кода размещая его перед веб-камерой для расшифровки

Проверяем результат

Отключаемся от источника видео

Полная версия

© ООО "Инфостарт", 2006-2013 www.infostart.ru