Для работы с компонентой требуется зарегистрировать ее в реестре для 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_VisibleClipBoundsWidth, frame_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.: перед регистрацией компонента стоит предварительно подключить к компьютеру камеру (реальную или виртуальную).
Из-за личной безграмотности не понимаю зачем это нужно, но написано умно! 🙂 Возьму на заметку! 🙂
Очень интересно.
Как быстро происходит опознание кода? Какова точность? Это тестировалось?
Спасибо большое. Для первичной внутренней инвентаризации и учета техники нашего отдела АСУ самое то. Вместо вэб-камеры можно подключить камеру смартфона, там разрешение побольше.
(4) andrei.k, Уже пробовали? Как результаты?
(5) Геннадьевич, не пробовал, не качал. Мне идея понравилась. Так как есть проблема, сейчас над ней и думаем, по учету техники. И для входящей очень даже ничего. Сканер штрих-кода еще не скоро купим, конкурсы долбанные, да и то пока только для делопроизводителей в документооборот. А так исходники есть, напишем свое что-нибудь.
(6) andrei.k, Понятно. Бюджетная организация?
Не, монополисты.
при fps > 5-7 ловит смытые и наклонные поверхности, задержек визуальных при распознании не замечал. Разрешение не критично, 320 все ловит нормально даже в условиях не очень хорошего освещения. Опять же обрабатывать можно не весь экран, а некоторую его часть.
При fps < 5 не ловит статику (во всяком случае на той камере, без автофокуса, на которой проверяли) соответственно код не распознает.
(9) djvu, Спасибо, вот это ответ, который я хотел услышать, ясно и четко.
Огромный + за данную разработку!!!
У меня при открытии выскакивает:
{Форма.Форма.Форма(18,2)}: Переменная не определена (РаботаСоСтрокамиРасширенная)
<<?>>РаботаСоСтрокамиРасширенная.ОРВИнициализироватьПоУмолчанию(об_РгВ);
{Форма.Форма.Форма(57,2)}: Переменная не определена (РаботаСоСтрокамиРасширенная)
<<?>>РаботаСоСтрокамиРасширенная.ОРВПолучитьМассивСовпаденийСШаблоном(об_РгВ, тек_стр_ТЗ.тек_СтрокаСВебКамеры, шаблон_ПоискРгВ, массив_Результаты, РазмерМассива);
Что можно сделать?
Все работает как, надо =)
Распознает очень быстро, особенно если разрешение выставить максимальное.
Есть правда еще вопрос: Можно ли установить время(или паузу) до следующего распознавания?
А то значение PlaintTextQRCode слишком быстро меняется.
BAMPER
Самое простое, что приходит на ум — распознал картинку, игнорируешь следующие кадры до какого либо кода подтверждения.
У меня при открытии выскакивает:
{Форма.Форма.Форма(18,2)}: Переменная не определена (РаботаСоСтрокамиРасширенная)
<<?>>РаботаСоСтрокамиРасширенная.ОРВИнициализироватьПоУмолчанию(об_РгВ);
{Форма.Форма.Форма(57,2)}: Переменная не определена (РаботаСоСтрокамиРасширенная)
<<?>>РаботаСоСтрокамиРасширенная.ОРВПолучитьМассивСовпаденийСШаблоном(об_РгВ, тек_стр_ТЗ.тек_СтрокаСВебКамеры, шаблон_ПоискРгВ, массив_Результаты, РазмерМассива);
Что можно сделать?
То же самое. Как исправить?
(105) Gazza,
Файл без ошибок во вложении.
djvu, скажите пожалуйста, PDF417 читает? и можно ли переделать на УФ?
to Bond
За декодирование ШК отвечает библиотека — ZXing, насколько я помню — с PDF417 она справляется.
По поводу управляемых форм — компонента сделана как ActiveX, т.е. ей должно быть все равно куда вы ее влепите и чем будут выступать обработчики событий.
(18) К сожалению, не все равно. ТК не работает с ActiveX (
А как зарегистрировать в х64 системе?
При изменении пути на Framework64v2.0.50727 все-равно пишет ошибку про недопустимую сборку NET
Дык исходники для этого и выложил, пересобрать надо под x64 и/или держать 32-битную версию фреймверка и к ней путь прописать в системной path
(21) djvu, не будет ли наглостью попросить пересобрать под 64 x ? Ибо даже установка VS и курение мануалов так и не дало желаемого результата.
Добрый день, на планшете с Win 10 работать будет? или надо пересобирать? или даже это не поможет?)
(23)
В новом браузере по идее — нет (вроде бы там от ActiveX — отказались совсем). В 1С и старой версии эксплорера должно (при условии, что на этой аппаратной платформе работают Aforge (и Zxing)).
В общем, многое зависит от аппаратной плаформы, что под нее умеют фреймверки майкрософтовские (Aforge — вроде бы не порт, а вот на счет ZXing — не уверен).