Пишем программу для автоматического распознавания объектов с веб-камер


Оглавление (нажмите, чтобы открыть):

Распознавание образов с IP-камеры

доброго времени суток. возник такой вопрос.
есть ип-камера, я получаю с нее картинку. мне нужно, скажем, каждый 5 кадр с нее сверять с известной картиной(png или jpg). и если есть совпадение сообщить об этом как нибудь.(сигнал или функция)
подскажите пожалуйста как это реализовать. и где можно посмотреть описание с примерами.

зы. как вывести изображение на форму а не в отдельном окне

pps использую opencv и qt5

образцы картинок и исходники в архиве

Вложения

camera.rar (120.5 Кб, 70 просмотров)
14.02.2014, 10:14

Распознавание образов
Здравствуйте, хотел бы спросить совета у вас. Вообщем надо написать курсовую работу по теме.

Распознавание образов
здравствуйте. нужно написать программу для распознавания типов водного транспорта (лодка, корабль.

Распознавание образов
Как можно распознать образы из, допустим, яндекс карты, то есть прямоугольники, метки и т.д. Чтобы.

Распознавание образов
Можно при помощи моделирования нейросетей или чисто математических алгоритмов распознавать объекты.

Распознавание образов
Какую лучше всего взять библиотеку, метод именно про распознавание образов?

14.02.2014, 12:24 2

Немного приходилась заниматься распознаванием объектов на изображении. Решал задачу сшивки кадров аэро-фотосъемки. Для этого я вырезал небольшие участки на одном изображении, брал эти участки в качестве шаблона и искал похожие участки на другом изображении с помощью OpenCV. Ниже приведу код функции поиска участка на изображении по шаблону. Данный пример давал неплохие результаты. Но я не успел довести его до идеала, ибо ушел работать в другую контору. А сейчас все руки не доходят взяться и доделать. В общем выкладываю код, может чем-то поможет:

Метод возвращает прямоугольник на исходном изображении, который наиболее вероятно «похож» на шаблон.

Recog.ru — Распознавание образов для программистов

Готовые системы распознавания автомобильных номеров могут быть достаточно дорогими, при этом качество распознавания не гарантируется на высоком уровне. Бывают случаи, когда, купив систему распознавания автомобильных номеров, пользователь обнаруживает, что она работает не достаточно достоверно. При использовании iANPR SDK (https://intbusoft.com/rus/products/iANPR/) вы можете сами спроектировать систему распознавания за очень короткое время и убедиться в качественности работы. Кто может использовать iANPR SDK? В принципе любая компания, которой по тем или иным причинам желает использовать распознавание автомобильных номеров. Однако, среди них можно выделить 2 большие группы по целям использования:
1) для автоматизации въезда на территорию компании – нет нужды покупать дорогостоящее программное обеспечение, которое не удовлетворяет всем потребностям, когда можно купить лицензию iANPR RUS PRO LIMITED за 9950 рублей и сделать все, что нужно самостоятельно, если в компании есть программист;
2) для использования в собственной распространяемой системе видеонаблюдения – конечно, при разработке собственного программного продукта приоритетно все модули разрабатывать самому, однако разработка надежной системы распознавания автомобильных номеров не является тривиальной задачей, и на неё требуются не только высококвалифицированные специалисты с высокой заработной платой, но и месяцы разработки-тестирования. В этом случае покупка лицензии iANPR RUS PRO FULL за 50000 рублей на начальном этапе позволит вам сразу же ввести функцию распознавания автомобильных номеров в вашу систему, что является сравнительно небольшими затратами.
В данной статье будет показано как, использую iANPR SDK, IP камеру, OpenCV и Windows Forms за 3 часа сделать простое приложение для распознавания автомобильных номеров. В конце разработки будет получено приложение следующего вида:

Что потребуется на компьютере:
1) Visual Studio 2010 Pro (если другая версия, то нужно будет установить Microsoft Visual C++ 2010 SP1 Redistributable Package (x86));
2) iANPR SDK FREE 1.1;
3) OpenCV 2.4.6
После установки OpenCV необходимо в PATH переменной окружения Windows прописать путь до соответствующих dll – у меня это так:

1. Создание и настройка проекта
Выбираем Файл -> Создать -> Проект

Visual C++ -> Приложение Windows Forms.
В результате создается исходный код:

Для начала отредактируем следующую форму:

Здесь есть место для вывода изображения с камеры, поле ввода- IP адреса и старта работы, поле вывода результатов распознавания.
Настройка путей до *.h и *.lib файлов:

Настройка подключаемых библиотек:

Естественно, что lib файл для iANPR должен быть уже в каталоге с вашим исходным кодом:

Однако, когда мы подключаем *.h файлы:
#include «opencv2/highgui/highgui_c.h»
#include «include\iANPR.h»
То обнаруживаем, что:

Чтобы исправить данные ошибки меняем настройки проекта на следующие:

После этого программа компилируется.

2. Подключение к IP камеры и вывод изображения
Создадим файлы camera.cpp и camera.h, в которых будем записывать все функции, работающие с изображением и распознаванием. Для начала заполним camera.cpp следующим кодом:

Указатель capture будет хранить сведения о видеопотоке. Здесь для упрощения пользуемся глобальными переменными, что в реальном проекте недопустимо, но поскольку наша цель очень быстрое создание приложения, то мы ограничимся этим. stop указывает поступил ли сигнал на завершение потока.
Функция Start получает на вход IP адрес, которые далее модифицируется в строку:

Логин и пароль для IP камеры пока записываем жестко. Эту строку передаем функции cvCaptureFromFile, инициализируя создание видеопотока. Сделаем получение изображения с камеры и его распознавание отдельным потоком, для чего с помощью функции CreateThread создаем новый поток, начинающийся в функции ImageProcess.
Функция ImageProcess сразу же входит в бесконечный цикл получения кадра с видеопотока, цикл будет прерываться, если значение stop станет true.
Функция Stop посылает сигнал об остановке, изменяя значение stop на true.
Файл camera.h будет следующим:

В файле формы Form1.h добавляем функцию, обрабатывающую нажатие кнопки «Старт»

Здесь код предназначен для перевода из формата текстового поля в char*, а затем вызов функции Start.
Также добавляем обработку нажатия «Стоп»:

Если теперь скомпилировать и пройтись отладчиком, то видно, что видеопоток создается, а кадры получаются.
Следующее, что нужно сделать, это вывести изображение на форму. Для этого вставим в capture.cpp функцию CreateRGBBitmap, преобразующую IplImage* в HBITMAP (она представлена в комментариях).

Прежде, чем делать дальше, вспомним, что поскольку будут работать 2 потока: один получать и обрабатывать изображение, второй поток работает с формой; то при обращении к одним и тем же данным будет возникать состояние состязания. Поэтому необходимо добавить критические секции.
Добавим 2 глобальные переменные в capture.cpp:


Одна для изображения, вторая для критической секции. Модернизируем ImageProcess следующим образом:

В функции создаем небольшое изображение, которое будет хранить снимок с камеры. В цикле преобразование изображение, а работу с Bitmap возьмем в границы критической секции. В функции Start нужно добавить инициализацию критической секции:

Помимо этого в capture.cpp и h добавятся 2 функции:

Одна для возвращения изображения, другая для критической секции.
В Form.h необходимо сделать следующие действия.
Ввести новую переменную private: int start_;, которая изначально инициализируется как false. Функции нажатия кнопок модернизируются:

Также добавляем обработчик события закрытия формы:

Вешаем на форму таймер, делаем задержку 100 милисекунд и обработчик таймера:

В обработчике, если процесс запущен, то внутри критической секции получается изображение из capture.cpp и передается на pictureBox1.
Компилируем все и запускаем. Немного ожидаем подключения к камере после нажатия, но после подключения все работает:

3. Распознавание автомобильных номеров
Для распознавания автомобильных номеров также добавляем глобальные переменные в capture.cpp:
// Для распознавания номеров

Меняем функцию ImageProcess следующим образом:

Здесь информация полностью взята из примера capture iANPR SDK.
Добавляем в Start выделение памяти для результатов распознавания:

Программы для веб-камер

RGS-AvaCam — программа для захвата видео и снимков с веб-камеры как в ручном, так и в автоматическом режиме.

Advanced Webcam Recorder — программа для записи видео с веб-камеры, поддерживает запись звука и технологию распознавания лиц.

Webcamoid — универсальная программа для работы с веб-камерами, позволяет записать видео и делать скриншоты как с веб-камеры, так и с рабочего стола вашего компьютера.

iPRGcam — программа для видеонаблюдения через вебкамеру с функцией детектора движения.

SecurityCam — программа для видео наблюдения с помощью веб-камеры. При обнаружении движения SecurityCam начинает записывать видео с веб-камеры и сохраняет его на жесткий диск в AVI файл а так-же делает скриншоты через заданный интервал времени.

CamBlocker — программа для блокировки веб-камер, позволяет заблокировать веб-камеру если Вы подозреваете, что за Вами может вестись скрытое наблюдение.

AbelCam — многофункциональная программа для работы с веб-камерами любого типа, ТВ-тюнерами и другими видео устройствами.

KABcam — программа для захвата изображения с веб-камеры и автоматической публикации снимка в Интернете.

ImWatcher — программа видео-наблюдения которая позволяет контролировать изображение одновременно с нескольких веб и IP-камер.

ConquerCam — программа для захвата изображения с веб-камеры и загрузки снимков в интернет.

GazeRecorder — программа которая отслеживает движения глаз с помощью веб-камеры и делает видеозапись.

WebCamSplitter — программа дублирования видео потока от веб-камеры для нескольких приложений одновременно.

Free Webcam Recorder — программа для записи видео с веб-камеры.
Небольшая бесплатная программа, которая поможет Вам записать видео с вебкамеры в формате .Avi и сохранить его в указанную папку .

Webcam Photobooth — удобная программа для автоматического захвата видеоклипов со звуком с веб-камеры и печати изображений сделанных с помощью веб-камеры.

AutoWebCam — программа для автоматического создания снимков с веб-камеры.
Небольшое и бесплатное приложение, которое поможет вам захватить и сохранить серию скриншотов с веб-камеры в автоматическом режиме .

MultiSplitter — программа которая позволяет использовать веб-камеру в нескольких приложениях одновременно.

WebCamImageSave — легкая в использовании, бесплатная программа для захвата снимков с веб-камеры через определенные интервалы времени в автоматическом режиме.

IpcamCfg — бесплатный менеджер IP-камер.

UnionCam Manager — универсальная программа для веб-камеры, с помощью которой можно вести видео наблюдение и охрану помещений, записать видео, транслировать изображение с вебкамеры в Интернет.

WMV VideoRecorder — программа для записи видео с веб-камер и других устройств видеозахвата.

Запись видео и детектор движения с веб-камеры

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


Первая программа — это продукт от разработчика Дениса Короткевича MoveDetector 2.50. Программа является регистратором движения, использующим любую бытовую вебкамеру. Интерфейс программы русскоязычный, настройки интуитивно понятны понятны.

При определении движения (которое можно настроить, к примеру, на исключение срабатывания на перемещение облаков) MoveDetector 2.50 начинает сохранять скриншоты с камеры в папку, которую следует указать в настройках.

Для запуска MoveDetector 2.50 следует дважды кликнуть по файлу MoveDetector2_50.exe, скачать который Вы можете по ссылкам внизу страницы или на сайте разработчика.
Затем выбираем видеоустройство, разрешение записи (в этом разрешении будут создаваться снимки подозрительной активности при её обнаружении) и нажимаем на кнопку «Включить».

Собственно, и всё, можно работать.

Если Вы ставите галочку у пункта «Капчурить экран сюда», то, при обнаружении движения, программа сохраняет скриншоты в указанную папку, качество этих скриншотов Вы также можете изменить, и, кроме этого, задать период между генерацией снимков. Кроме того, имеется возможность воспроизвести звуковой файл после заданного времени срабатывания определения движения, а также, направить на указанный E-mail письмо с предупреждением или даже скриншоты заснятой активности.

Но отправку почты необходимо настроить. Следует указать не только емайл получателя, но и адрес и пароль отправителя (можно тот же, что и получателя), а также, настройки SMTP-сервера, например, для почты list.ru это будет smtp.list.ru.

Настройки программы сохраняются в файле MoveDetector2_50.exe.ini, который создаётся при первом запуске в той же папке, где находится исполняемый файл. Если Вы изменили настройки, то их необходимо сохранить, нажав на кнопку «Сохранить», расположенную в правом нижнем углу рабочего окна.

Настройка определения активности производится после простановки галки у пункта «Привод слежения», расположенному вверху интерфейса. В рабочем окне добавляются новые опции, калибровка, позиционирование и поиск объектов

Скачать программу для определения движения с помощью веб-камеры:

Статья Как собрать простую систему распознавания лиц в режиме реального времени.

Voron

Интерес к системам распознавания лиц настолько велик, что принимает масштабы эпидемии планетарного масштаба. Алгоритмы распознавания уже используются не только спецслужбами, но и многими компаниями, которые давно внедрили данную технологию в нашу с вами повседневную жизнь. Сейчас её можно встретить практически везде: в аэропортах и на вокзалах, в банках и торговых центрах, в больницах и школах и даже просто на улицах больших городов.
Китай — мировой лидер по технологиям наблюдения за своими гражданами. К 2020 году там планируется установить 600 миллионов видеокамер. У полицейских есть специальные очки-дисплеи, которые могут выдать информацию о прохожем — достаточно просто на него посмотреть. В апреле 2020 года на востоке Китая задержали находящегося в розыске мужчину. Полиция с помощью видеонаблюдения нашла его на стадионе во время концерта, где было 70 тысяч человек.
Что уж говорить о виртуальном мире социальных сетей, где люди автоматически отмечаются на загруженных фотографиях и мобильных операционных системах, где смартфон узнаёт своего владельца через объектив фронтальной камеры.
В России успешно применяется технология распознавания на базе нейросети, которая позволяет узнать человека по фотографии и идентифицировать его, сравнив изображение с его фотографиями в социальных сетях. В первую очередь, во «ВКонтакте».
Тема эта настолько обширна, что раскрыть её в одной статье при всем желании никак не получится, да и цель у нас другая — так что остановимся на этом и перейдем к практике.

Мастер Йода рекомендует:  Сила единицы измерения em в CSS

Шаг за шагом вы узнаете, как буквально в домашних условиях собрать простую и недорогую систему распознавания лиц в режиме реального времени. Способ предложил программист из Чили Марсело Ровай.

Для этого нам понадобится следующее оборудование:

  • Raspberry Pi 3 Модель B
  • Raspberry Pi Модуль камеры

Программные компоненты:

  • Python 3

Для распознавания лиц мы будем использовать камеру PiCam и библиотеки Open Source Computer Vision (OpenCV) на Raspberry Pi (Raspbian как ОС) и Python.
OpenCV был разработан для вычислительной эффективности с сильным акцентом на приложениях реального времени. Таким образом, он идеально подходит для распознавания лиц в режиме реального времени с помощью камеры.

Работу разделим на три этапа :

— Обнаружение лица и сбор данных
— Обучение Распознавателя
— Распознавание лица
Приведенная ниже схема иллюстрирует эти этапы:

Установка пакета OpenCV 3

Мы будем использовать Raspberry Pi V3, обновленную до последней версии Raspbian (Stretch).
Пошаговую инструкцию установки OpenCV я подробно описал в предыдущей статье: Установка OpenCV 3 + Python на Raspberry Pi ,
После установки, у вас должна быть готовая виртуальная среда OpenCV.
Давайте перейдем в нашу виртуальную среду и проверим, что OpenCV 3 установлен правильно.
Рекомендуется запускать команду «source» каждый раз, когда вы открываете новый терминал, чтобы убедиться, что системные переменные установлены правильно.

Далее давайте войдем в нашу виртуальную среду:

Если вы видите текст (cv), предшествующий вашему приглашению, то вы находитесь в виртуальной среде cv :

Обращаю Ваше внимание, что виртуальная среда cv Python полностью независима и отделена от версии Python по умолчанию, включенной в загрузку Raspbian Stretch. Таким образом, любые пакеты Python в глобальном каталоге site-packages не будут доступны для виртуальной среды cv. Аналогично, любые пакеты Python, установленные в пакетах site-cv, не будут доступны для глобальной установки Python.
Теперь введите в ваш интерпретатор Python:

и подтвердите, что вы используете версию 3.5 (или выше).
Внутри интерпретатора (появится «>>>») импортируйте библиотеку OpenCV:
import cv2

Если сообщения об ошибках не появляются, OpenCV правильно установлен в вашей виртуальной среде PYTHON.
Вы также можете проверить установленную версию OpenCV:

cv2.__version__
Должна появиться 3.3.0 (или более новая версия).

На скриншоте выше показаны предыдущие шаги.

После того, как мы установили OpenCV в RPi, давайте проверим, правильно ли работает ваша камера.
Я предполагаю, что у вас уже есть установленная PiCam на вашем Raspberry Pi.
Камера должна быть включена, когда вы начинаете установку, иначе драйверы будут установлены неправильно.
Если вы получили ошибку типа: OpenCV Error: Assertion failed, вы можете попытаться решить проблему, используя команду:

sudo modprobe bcm2835-v4l 2

После того, как все драйверы установлены правильно, введите приведенный ниже код Python в вашей IDE:

import numpy as np
import cv2
cap = cv2.VideoCapture(0)
cap.set(3,640) # set Width
cap.set(4,480) # set Height
while(True):
ret, frame = cap.read()
frame = cv2.flip(frame, -1) # Flip camera vertically
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

cv2.imshow(‘frame’, frame)
cv2.imshow(‘gray’, gray)

k = cv2.waitKey(30) & 0xff
if k == 27: # press ‘ESC’ to quit
break
cap.release()
cv2.destroyAllWindows()


Приведенный выше код будет захватывать видеопоток, который будет генерироваться вашей PiCam, отображая как в цветном режиме BGR, так и в сером.
Обратите внимание, что я повернул камеру вертикально, так как она собрана. Если это не ваш случай, прокомментируйте или удалите командную строку «flip».
Вы также можете скачать код с GitHub:

Для выполнения скрипта введите команду:

Чтобы завершить программу, вы должны нажать клавишу [ESC] на клавиатуре. Щелкните мышью в окне видео, прежде чем нажимать [ESC].

Некоторые пользователи сталкивались с проблемой при попытке открыть камеру (сообщения об ошибке «Ошибка подтверждения»). Это может произойти, если камера не была включена во время установки OpenCv и, следовательно, драйверы камеры были установлены неправильно. Чтобы исправить ошибку, используйте команду:

sudo modprobe bcm2835-v4l2

Вы также можете добавить bcm2835-v4l2 в последнюю строку файла /etc /modules, чтобы драйвер загружался автоматически при загрузке системы.

Самой основной задачей распознавания лиц, конечно же, является «Обнаружение лица». Прежде всего, вы должны «захватить» лицо (Фаза 1), чтобы распознать его, по сравнению с новым лицом, захваченным в будущем (Фаза 3).
Наиболее распространенный способ обнаружения лица (или любых объектов) — использование «

»
Обнаружение объектов с использованием каскадных классификаторов на основе признаков Хаара — это эффективный метод обнаружения объектов, предложенный Полом Виолой и Майклом Джонсом в их статье «Быстрое обнаружение объектов с использованием расширенного каскада простых функций». Это подход, основанный на машинном обучении, где Каскадная функция обучается на множестве положительных и отрицательных изображений. Затем он используется для обнаружения объектов на других изображениях.
Здесь мы будем работать с распознаванием лиц. Изначально алгоритму требуется много положительных изображений (изображений лиц) и отрицательных изображений (изображений без лиц) для обучения классификатора. Затем нам нужно извлечь из него особенности. Удобно то, что OpenCV изначально поставляется с инструктором и детектором.

Если вы хотите обучить свой классификатор для любого объекта, такого как автомобиль, собака и т. д., можете использовать OpenCV для его создания. Его полная информация приведена здесь:

Если вы не хотите создавать свой собственный классификатор — OpenCV уже содержит множество предварительно обученных классификаторов для лица, глаз, улыбки и т. д. Эти XML-файлы можно загрузить из

import numpy as np
import cv2
faceCascade = cv2.CascadeClassifier(‘Cascades/haarcascade_frontalface_default.xml’)
cap = cv2.VideoCapture(0)
cap.set(3,640) # set Width
cap.set(4,480) # set Height
while True:
ret, img = cap.read()
img = cv2.flip(img, -1)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
faces = faceCascade.detectMultiScale(
gray,
scaleFactor=1.2,
minNeighbors=5,
minSize=(20, 20)
)
for (x,y,w,h) in faces:
cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)
roi_gray = gray[y:y+h, x:x+w]
roi_color = img[y:y+h, x:x+w]
cv2.imshow(‘video’,img)
k = cv2.waitKey(30) & 0xff
if k == 27: # press ‘ESC’ to quit
break
cap.release()
cv2.destroyAllWindows()

Приведенный выше код — это все, что вам нужно для обнаружения лица с использованием Python и OpenCV.
Обратите внимание на строку ниже:

Это строка, которая загружает классификатор — classifier (который должен находиться в каталоге с именем «Cascades /», в каталоге вашего проекта).
Затем мы установим нашу камеру и внутри цикла загрузим наше входное видео в режиме градаций серого.
Теперь мы должны вызвать нашу функцию классификатора, передав ей некоторые очень важные параметры, такие как масштабный коэффициент, количество соседей и минимальный размер обнаруженного лица.

faces = faceCascade.detectMultiScale(
gray,
scaleFactor=1.2,
minNeighbors=5,
minSize=(20, 20)
)

Где :
gray — это входное изображение в градациях серого.
scaleFactor — это параметр, определяющий, насколько уменьшается размер при каждом масштабе изображения. Используется для создания масштабной пирамиды.
minNeighbors — это параметр, указывающий, сколько соседей должен иметь каждый прямоугольник-кандидат, чтобы сохранить его. Более высокое число дает меньше ложных срабатываний.
minSize — это минимальный размер прямоугольника, который считается лицом.

Функция обнаружит лица на изображении. Далее мы должны «пометить» грани на изображении, используя, например, синий прямоугольник. Это делается с помощью этой части кода:

for (x,y,w,h) in faces:
cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)
roi_gray = gray[y:y+h, x:x+w]
roi_color = img[y:y+h, x:x+w]

Если грани найдены, он возвращает позиции обнаруженных граней в виде прямоугольника с левым верхним углом (x, y) и имеет «w» в качестве своей ширины и «h» в качестве высоты = => (x, y, w, h).

Как только мы получим эти местоположения, мы можем создать «ROI» (нарисованный прямоугольник) с гранями и представить результат с помощью функции imshow () .
Запустите приведенный выше скрипт Python в своей среде Python, используя терминал Rpi:

Вы также можете подключить классификаторы для обнаружения глаз или даже обнаружения улыбки. В этих случаях вы будете включать функцию классификатора и рисование прямоугольника внутри цикла лица, потому что нет смысла обнаруживать глаза или улыбку за пределами лица.
Обратите внимание, что на Pi, имеющем несколько классификаторов в одном и том же коде, будет замедляться обработка — этот метод обнаружения (HaarCascades) использует большое количество вычислительной мощности.

На GitHub есть готовые примеры классификаторов:

Результат будет примерно таким :

Давайте начнем первую фазу нашего проекта. Здесь мы просто создадим набор данных, в котором будем хранить для каждого идентификатора группу фотографий в сером цвете с той частью, которая использовалась для обнаружения лица.

Сначала создайте каталог, в котором вы разрабатываете свой проект, например, FacialRecognitionProject:

mkdir FacialRecognitionProject
В этом каталоге, кроме 3-х сценариев Python, которые мы создадим для нашего проекта, мы должны создать Лицевой классификатор. Вы можете скачать его с GitHub:

Затем создайте подкаталог, в котором мы будем хранить наши образцы лица . Назовем его dataset (набор данных, база данных):

Загрузите код из GitHub:

import cv2
import os
cam = cv2.VideoCapture(0)
cam.set(3, 640) # set video width
cam.set(4, 480) # set video height
face_detector = cv2.CascadeClassifier(‘haarcascade_frontalface_default.xml’)
# For each person, enter one numeric face id
face_ > ==> ‘)
print(«\n [INFO] Initializing face capture. Look the camera and wait . «)
# Initialize individual sampling face count
count = 0
while(True):
ret, img = cam.read()
img = cv2.flip(img, -1) # flip video image vertically
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
faces = face_detector.detectMultiScale(gray, 1.3, 5)
for (x,y,w,h) in faces:
cv2.rectangle(img, (x,y), (x+w,y+h), (255,0,0), 2)
count += 1
# Save the captured image into the datasets folder
cv2.imwrite(«dataset/User.» + str(face_id) + ‘.’ + str(count) + «.jpg», gray[y:y+h,x:x+w])
cv2.imshow(‘image’, img)
k = cv2.waitKey(100) & 0xff # Press ‘ESC’ for exiting video
if k == 27:
break
elif count >= 30: # Take 30 face sample and stop video
break
# Do a bit of cleanup
print(«\n [INFO] Exiting Program and cleanup stuff»)
cam.release()
cv2.destroyAllWindows()

Код очень похож на код, который мы видели для распознавания лиц. Мы добавили «команду ввода» для захвата идентификатора пользователя, который должен быть целым числом (1, 2, 3 и т. д.)

И для каждого из захваченных кадров мы должны сохранить его в виде файла в каталоге набора данных dataset :

cv2.imwrite(«dataset/User.» + str(face_id) + ‘.’ + str(count) + «.jpg», gray[y:y+h,x:x+w])

Обратите внимание, что для сохранения вышеуказанного файла вы должны импортировать библиотеку «os». Имя каждого файла будет соответствовать структуре:

User .face_id.count. jpg
Например, для пользователя с face_ > User.1.4.jpg

Как показано на фото:


В коде собрано 30 образцов с каждого идентификатора. Вы можете изменить его на последнем «elif».
Запустите скрипт Python и запишите несколько идентификаторов. Вы должны запускать скрипт каждый раз, когда хотите присоединить нового пользователя или изменить фотографии.

На этом этапе мы должны взять все пользовательские данные из нашего набора данных «trainer» OpenCV Recognizer. Это делается напрямую с помощью определенной функции OpenCV. Результатом будет файл .yml, который будет сохранен в каталоге «trainer /».

Итак, приступим к созданию подкаталога, в котором мы будем хранить данные обучения:

mkdir trainer
Загрузите с GitHub второй скрипт на python:

import cv2
import numpy as np
from PIL import Image
import os
# Path for face image database
path = ‘dataset’
recognizer = cv2.face.LBPHFaceRecognizer_create()
detector = cv2.CascadeClassifier(«haarcascade_frontalface_default.xml»);
# function to get the images and label data
def getImagesAndLabels(path):
imagePaths = [os.path.join(path,f) for f in os.listdir(path)]
faceSamples=[]
> for imagePath in imagePaths:
PIL_img = Image.open(imagePath).convert(‘L’) # convert it to grayscale
img_numpy = np.array(PIL_img,’uint8′)
)[1])
faces = detector.detectMultiScale(img_numpy)
for (x,y,w,h) in faces:
faceSamples.append(img_numpy[y:y+h,x:x+w])
ids.append(id)
return faceSamples,ids
print («\n [INFO] Training faces. It will take a few seconds. Wait . «)
faces, > recognizer.train(faces, np.array(ids))
# Save the model into trainer/trainer.yml
recognizer.write(‘trainer/trainer.yml’) # recognizer.save() worked on Mac, but not on Pi
# Print the numer of faces trained and end program
print(«\n [INFO] <0>faces trained. Exiting Program».format(len(np.unique(ids))))

Убедитесь, что на вашем Rpi установлена библиотека PIL. Если нет, выполните следующую команду в Терминале:
pip install pillow

В качестве распознавателя мы будем использовать распознаватель лица LBPH (ГИСТОГРАММЫ ЛОКАЛЬНЫХ ДВОЙНЫХ ШАБЛОНОВ), включенный в пакет OpenCV. Мы делаем это в следующей строке:
recognizer = cv2.face.LBPHFaceRecognizer_create()

Функция «getImagesAndLabels (path)» будет принимать все фотографии в каталоге: «dataset/» , возвращая 2 массива: «Ids» и «faces»(идентификаторы и лица). С этими массивами в качестве входных данных мы будем обучать наш распознаватель:

В результате файл с именем «trainer.yml» будет сохранен в каталоге «trainer /», который был ранее нами создан.

Теперь мы достигли финальной фазы нашего проекта. Здесь мы запечатлим новое лицо на нашей камере, и если у этого человека было запечатлено и обучено его лицо, наш распознаватель сделает прогноз, возвращающий его идентификатор и индекс, показывающие, насколько оно вероятно верно.

import cv2
import numpy as np
import os
recognizer = cv2.face.LBPHFaceRecognizer_create()
recognizer.read(‘trainer/trainer.yml’)
cascadePath = «haarcascade_frontalface_default.xml»
faceCascade = cv2.CascadeClassifier(cascadePath);
font = cv2.FONT_HERSHEY_SIMPLEX
#iniciate id counter
> # names related to > Marcelo: > names = [‘None’, ‘Marcelo’, ‘Paula’, ‘Ilza’, ‘Z’, ‘W’]
# Initialize and start realtime video capture
cam = cv2.VideoCapture(0)
cam.set(3, 640) # set video widht
cam.set(4, 480) # set video height
# Define min window size to be recognized as a face
minW = 0.1*cam.get(3)
minH = 0.1*cam.get(4)
while True:
ret, img =cam.read()
img = cv2.flip(img, -1) # Flip vertically
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

Мастер Йода рекомендует:  Пользовательская настройка панели администрирования WordPress панель управления сайтом

faces = faceCascade.detectMultiScale(
gray,
scaleFactor = 1.2,
minNeighbors = 5,
minSize = (int(minW), int(minH)),
)
for(x,y,w,h) in faces:
cv2.rectangle(img, (x,y), (x+w,y+h), (0,255,0), 2)
> # Check if conf > «0» is perfect match
if (confidence conf .format(round(100 — confidence))
else:

conf .format(round(100 — confidence))

cv2.putText(img, str(id), (x+5,y-5), font, 1, (255,255,255), 2)
cv2.putText(img, str(confidence), (x+5,y+h-5), font, 1, (255,255,0), 1)

cv2.imshow(‘camera’,img)
k = cv2.waitKey(10) & 0xff # Press ‘ESC’ for exiting video
if k == 27:
break
# Do a bit of cleanup
print(«\n [INFO] Exiting Program and cleanup stuff»)
cam.release()
cv2.destroyAllWindows()

Мы включаем сюда новый массив, поэтому будем отображать «имена» вместо нумерованных идентификаторов:

names = [‘None’, ‘Marcelo’, ‘Paula’, ‘Ilza’, ‘Z’, ‘W’]

Так, например: Irina получит user с > Далее мы обнаружим лицо, то же самое, что мы делали ранее с классификатором haasCascade. Обнаружив лицо, мы можем вызвать самую важную функцию в приведенном выше коде:

recognizer.predict () примет в качестве параметра захваченную часть лица, подлежащего анализу, и вернет его вероятного владельца, указав его идентификатор и степень достоверности.
Обратите внимание, что индекс достоверности вернет «zero», если будет достигнут идеальный результат.

И, наконец, если распознаватель может предсказать лицо, мы помещаем текст поверх изображения с вероятным идентификатором и сколько эта вероятность составляет в процентах, что совпадение является правильным («вероятность» = 100 — индекс достоверности). Если нет, то на лицо наносится надпись НЕИЗВЕСТНО.

Вот и всё – теперь вы можете собрать свою собственную систему распознавания лиц. Она, конечно простенькая, но для дома или небольшого офиса – пойдет. К тому же не требует больших материальных затрат.

Полезные утилиты для веб-камеры

В этом небольшом обзоре мы рассмотрим несколько полезных утилит для твоей веб-камеры. Мы разберемся, как организовать видеонаблюдение, как транслировать веб-камеру в интернет и даже как сделать сигнализацию собственными руками.

Делаем систему видеонаблюдения и транслируем видео в интернет

Поставим реальную задачу. Представим, что есть склад, офис или еще какое-то производственное помещение. Нужно организовать за ним видеонаблюдение и сделать трансляцию видео в интернет, чтобы ты (будем надеяться, что это будешь только ты, а не все желающие) смог наблюдать за своим бизнесом, находясь даже дома. Можно, конечно, посмотреть на задачу и с другой стороны. У тебя есть частный дом, и тебе хочется знать, что происходит на разных частях твоей фазенды, например во дворе, возле гаража, на въезде… Конечно, ты хочешь наблюдать за своим имением из офиса или же из отеля где-то на Мальдивах. Организовать систему видеонаблюдения можно с помощью разных программ. Действительно, таких программ довольно много. Сегодня мы рассмотрим webcam 7 и webcamXP: обе программы можно использовать как для организации видеонаблюдения, так и для трансляции видео в интернет. Единственная разница между ними — webcamXP использует технологию Windows Media, а webcam 7 — FLV Player, также в webcam 7 добавлена возможность записи видео MJPEG со звуком, то есть теперь ты можешь не только видеть, но и слышать (если, конечно, камера оснащена качественным микрофоном).

Итак, webcam 7 Pro — многофункциональная программа для работы с веб-камерами. Конек программы — поддержка записи и передачи потокового видео с нескольких камер одновременно, причем программа поддерживает как IP-камеры, так и USB-камеры. Программа условно бесплатная, о стоимости ты можешь узнать на сайте разработчика (см. врезку «Ссылки»), но она может работать и в бесплатном режиме (Free). В Free-режиме программа поддерживает до двух видеоисточников, то есть можно подключить всего две камеры. С одной стороны, это мало. С другой (если у тебя квартира) — вполне достаточно. Одну камеру размещаешь у входной двери, а вторая будет внешняя — она будет наблюдать за парковкой, чтобы ты знал, что происходит с твоим автомобилем. Если две камеры мало, тогда придется купить или Private-лицензию (поддержка до четырех источников) или PRO (неограниченное число источников). Также неограниченное число источников поддерживается в лицензии PRO Trial, но в таком режиме программа проработает всего 21 день. При запуске программа предлагает выбрать лицензию (рис. 1).

Рис. 1. Выбор лицензии

Xakep #246. Учиться, учиться, учиться!

Добавить видеоисточник можно, щелкнув по «его месту» правой кнопкой мыши и выбрав тип видеоисточника и сам видеоисточник. На рис. 2 показаны мои PCI/USB-устройства видеозахвата. На рис. 3 показана программа в действии. Второй источник еще не успел загрузиться, но он уже добавлен. Кстати, у программы есть русский интерфейс, язык выбрать можно с помощью меню Language.

Рис. 2. Выбор устройства видеозахвата Рис. 3. Программа в действии

Программа автоматически запускает встроенный веб-сервер на порту 8080. Этот сервер используется для трансляции видео в интернет. Просто введи в браузере https://IP-адрес:8080 и увидишь трансляцию видео с первого источника (рис. 4). Выбрать источник позволяет список Source. Конечно, нужно настроить надлежащим образом брандмауэр на компе (на разрешение входящего соединения на порт 8080) и роутере.

Рис. 4. Трансляция видео в интернет

В разделе «Веб/Вещание» (Web/Broadcast) (рис. 5) можно наблюдать за работой встроенного веб-сервера, также можно оставить его, чтобы прекратить трансляцию онлайн (кнопка Disable).


Рис. 5. Раздел «Веб/Вещание» (Web/Broadcast)

Программа webcam 7 оснащена также датчиком движения. При обнаружении движения в контролируемом помещении прозвучит звуковой сигнал, придет оповещение по email или запустится выбранное в настройках программы приложение. Теоретически эту программу можно использовать и для создания сигнализации, но для этих целей мы будем использовать другую программу.

Сигнализация своими руками

iSpy — очень приятная программа для организации сигнализации. Программу можно использовать для охраны любых помещений — квартиры, склада, офиса. При обнаружении активности в отслеживаемом помещении iSpy может отправить сообщение по электронной почте или SMS. В этом и есть основное отличие от webcam 7, которая умеет отправлять только сообщения по электронной почте. Конечно, некоторые операторы предоставляют шлюзы, позволяющие послать SMS путем отправки обычного сообщения по электронной почте, но такая возможность подойдет не всем, да и оперативность работы таких шлюзов оставляет желать лучшего.

Также будет приятно знать, что iSpy полностью бесплатна и поддерживает любое число источников (во всяком случае, на сайте разработчиков ничего не говорится о каких-либо ограничениях, а у меня нет нескольких десятков IP-камер, чтобы проверить, так ли это).

Программа iSpy мне понравилась еще и тем, что у нее есть 64-битная версия и она также поддерживает запись видео с камер — это позволяет использовать ее не только в качестве сигнализации (обнаружил движение, отправил уведомление), но и в качестве полноценного средства слежения/видеозахвата, хотя для этого есть и другие программы. Единственное, что мне не понравилось, — посредственный перевод интерфейса приложения на русский язык, поэтому скрины в статье будут на английском.

Итак, для добавления источника захвата видео используется команда Add (рис. 6).

Рис. 6. Поддерживаемые источники

Далее нужно выбрать саму веб-камеру (если ты выбрал Local Camera) или ввести параметры доступа к камере (если ты выбрал IP Camera).

Рис. 7. Выбор веб-камеры

Далее на вкладке Motion Detection нужно установить параметры детектора движения, а на вкладке Alerts — параметры уведомления, на ней же можно ввести номер телефона, на который будут отправлены SMS в случае обнаружения движения. Вызвать окно, изображенное на рис. 8, можно с помощью команды Edit контекстного меню источника.

Рис. 8. Редактирование камеры

На рис. 9 изображена моя «система наблюдения» — вид на гараж и рабочий кабинет.

Рис. 9. iSpy в действии

Распознавание жестов

Первым и единственным продуктом стартапа Flutter является приложение, которое позволяет отслеживать и распознавать жесты с помощью устройств, оснащенных веб-камерой. Данный стартап был относительно недавно куплен компанией Google.

В настоящее время приложение Flutter доступно в Mac App Store. Пока оно доступно только для пользователей OS Х, но в скором времени ожидается версия программы для Windows.

Система слежения и обычный видеозахват

Иногда есть необходимость не в сигнализации, а просто в системе слежения и в постоянном видеозахвате видео с камеры. В этом случае можно использовать или iSpy, или любую другую программу захвата видео, например FrameCapture.

FrameCapture — простая программа, сочетающая в себе функции видеонаблюдения и общения в веб-чатах. Программа очень простая, поэтому, возможно, тебе она не понравится. Любителям чего-то сложнее можно порекомендовать программы AVS Video Recorder и Webcam Screen Video Capture.

Первая программа позволяет записывать видео с веб-камер, DV-, MiniDV-, VHS- и HD-видеокамер, ТВ-тюнеров и других доступных источников видео. Программу можно использовать не только для записи видео с веб-камеры, но и для оцифровки видеокассет. Конечно, полноценная система наблюдения из нее не получится, разве что у тебя всего одна камера и тебе нужно постоянно записывать с нее видео. Зато программа абсолютно бесплатна и теперь ты знаешь, чем можно оцифровать завалявшиеся видеокассеты. Вот только не забудь прикупить тюнер! А вот программа Webcam Screen Video Capture более функциональна. Она позволяет записывать видео со звуком с веб- и IP-камер, цифровых камер, карт захвата и других видеоисточников. Программа обладает большим количеством настроек и позволяет сохранять видео в форматах AVI, MP4, FLV, WMV, MKV. Также поддерживается захват скриншотов с веб-камеры, как в однократном режиме, так и в режиме серийной съемки. Еще одной полезной функцией программы является возможность изменения яркости, контрастности, насыщенности и добавления текста на видео. Возможностей у программы очень много, и самое приятное в том, что она бесплатна.

Авторизация с помощью веб-камеры

Встроенную веб-камеру твоего ноутбука можно использовать не только для общения в Skype, но и для авторизации в системе. Довольно удобно — пароль уже не понадобится. Все, что нужно, — это удобно усесться в кресле перед своей веб-камерой для авторизации. Для авторизации по веб-камере можно использовать программное обеспечение VeriFace. Это разработка Lenovo, устанавливается на ноутбуках этого производителя. Однако в Сети есть сообщения о том, что использование этой программы небезопасно, поскольку ее можно обмануть, предоставив твою фотографию. Аналогичная проблема, как сообщается, есть и в программе Luxand Blink!, однако разработчики уверяют, что все возможные проблемы они исправили и гарантируют возврат заплаченных средств в течение 90 дней. Если программа тебе не понравилась за три месяца использования, ты можешь вернуть обратно свои деньги. Чуть выше была упомянута программа от Lenovo. Аналогичные программы есть у Toshiba — Toshiba Face Recognition и Asus — Asus SmartLogon. По существу, все эти программы однотипные. Они сравнивают попавшее в фокус фотокамеры лицо с ранее сделанной фотографией пользователя. Если лицо распознано, то предоставляется доступ в систему. К сожалению, проблемы у всех таких программ тоже однотипные. Они не могут понять, человек перед камерой или его фотография.

Стоит отметить, что программы VeriFace и SmartLogon работают довольно быстро — они очень быстро распознают лицо: даже если ты на мгновение попал в «фокус», ты будешь тут же узнан. Программу VeriFace к тому же можно установить на ноутбук любого производителя, а не только Lenovo. Что касается Toshiba Face Recognition — программа ужасно медленна, но зато более безопасна — она более пристрастно проводит распознавание, и иногда даже сам пользователь не может войти в систему. Также это единственная программа, которая создает трехмерный образ твоего лица, что исключает авторизацию по фотографии. Хотя ее тоже удавалось обмануть, только приходилось повозиться. Но это было гораздо сложнее сделать, чем с программами от Lenovo и Asus. Жаль, что эту программу нельзя установить на ноутбуки других производителей.

Программы для веб-камер

RGS-AvaCam — программа для захвата видео и снимков с веб-камеры как в ручном, так и в автоматическом режиме.

Advanced Webcam Recorder — программа для записи видео с веб-камеры, поддерживает запись звука и технологию распознавания лиц.

Webcamoid — универсальная программа для работы с веб-камерами, позволяет записать видео и делать скриншоты как с веб-камеры, так и с рабочего стола вашего компьютера.

iPRGcam — программа для видеонаблюдения через вебкамеру с функцией детектора движения.

SecurityCam — программа для видео наблюдения с помощью веб-камеры. При обнаружении движения SecurityCam начинает записывать видео с веб-камеры и сохраняет его на жесткий диск в AVI файл а так-же делает скриншоты через заданный интервал времени.

CamBlocker — программа для блокировки веб-камер, позволяет заблокировать веб-камеру если Вы подозреваете, что за Вами может вестись скрытое наблюдение.

AbelCam — многофункциональная программа для работы с веб-камерами любого типа, ТВ-тюнерами и другими видео устройствами.

KABcam — программа для захвата изображения с веб-камеры и автоматической публикации снимка в Интернете.


ImWatcher — программа видео-наблюдения которая позволяет контролировать изображение одновременно с нескольких веб и IP-камер.

ConquerCam — программа для захвата изображения с веб-камеры и загрузки снимков в интернет.

GazeRecorder — программа которая отслеживает движения глаз с помощью веб-камеры и делает видеозапись.

WebCamSplitter — программа дублирования видео потока от веб-камеры для нескольких приложений одновременно.

Free Webcam Recorder — программа для записи видео с веб-камеры.
Небольшая бесплатная программа, которая поможет Вам записать видео с вебкамеры в формате .Avi и сохранить его в указанную папку .

Webcam Photobooth — удобная программа для автоматического захвата видеоклипов со звуком с веб-камеры и печати изображений сделанных с помощью веб-камеры.

AutoWebCam — программа для автоматического создания снимков с веб-камеры.
Небольшое и бесплатное приложение, которое поможет вам захватить и сохранить серию скриншотов с веб-камеры в автоматическом режиме .

Мастер Йода рекомендует:  Работа с данными в Web

MultiSplitter — программа которая позволяет использовать веб-камеру в нескольких приложениях одновременно.

WebCamImageSave — легкая в использовании, бесплатная программа для захвата снимков с веб-камеры через определенные интервалы времени в автоматическом режиме.

IpcamCfg — бесплатный менеджер IP-камер.

UnionCam Manager — универсальная программа для веб-камеры, с помощью которой можно вести видео наблюдение и охрану помещений, записать видео, транслировать изображение с вебкамеры в Интернет.

WMV VideoRecorder — программа для записи видео с веб-камер и других устройств видеозахвата.

10+ программ для веб-камеры [бесплатно]

Подборка утилит для управления веб-камерами и организации систем видеонаблюдения на компьютерах, управляемых Windows. Представленные программы позволяют накладывать графические эффекты на видеопоток с веб-камеры, использовать хромакей, превращать смартфоны и фотоаппараты в веб-камеры, объединять трансляции игр с веб-камерой, создавать системы видеонаблюдения с помощью IP-камер, обрабатывать видеозаписи, синхронизироваться с устройствами дистанционно и иным образом взаимодействовать с различными видеокамерами.

Распознавание предметов камерой

Задание от ментора.

Написать приложение, которое используя камеру телефона определяет объект который ты навел. Т.е. твое приложение открывает камеру. Ты наводишь на предмет, оно в нотификации или еще как пишет предмет на который ты навел Например наводишь на машину пишет что это машина

До этого написал только приложение, которое по кнопке выводит HelloWorld. Посоветуйте что использовать, может алгоритм какой то подскажете, что почитать 🙂

4 ответа 4

Сходите на Vuforia API — там есть распознавание образов — не уверен, что бесплатно, поскольку образ надо все равно засылать на сервер Vuforia, где он и обрабатывается.

Поройтесь еще здесь — Google Cloud Vision API — также облачное распознавание.

Ну и на закуску соберите это приложение: Android Object Detection — и поройтесь в его исходниках — как он работает.

Я видел пару статей, в которых делали приложение под андроид с распознавание объектов с помощью TensorFlow.

Ваш вопрос звучит примерно так: «Я знаю, как перемножить 2 числа. Пожалуйста, подскажите, как доказать гипотезу Пуанкаре.» Для начала, сделайте распознование рукописных цифр что ли (база данных MNIST). Вопрос слишком абстрактный. В текущей постановке задачи Вы никогда не решите проблему, так как даже не очерчен круг предметов, которые Вы хотите обнаруживать.

Если Вы хотите выделять машины в видео потоке, то можете почитать огромное количество статей на Хабре. Но ещё раз подчёркну: если Вы берётесь за область, связанную с нечёткими задачами, множествами, машинным обучением, то Вам нужно начинать с простых задач, с решения примеров, а не с задач высокго класса сложности.

«Ты наводишь на предмет, оно в нотификации или еще как пишет предмет на который ты навел»

В общем случае — нет, не реализовать 🙂 . Но вот распознавать конкретные классы объектов с хорошей долей вероятности в некоторых случаях реально.

Я бы посмотрел в следующие стороны :

  • соответвующие api. Вроде имелись у IBM в его Watson, Google и Microsoft — и наверняка я перечислил не всех.
  • (думаю, смартфоны не потянут, но — возможно — ошибаюсь) — ИНС, работающие как object detector-ы. Какие из них дают лучший результат я не скажу. Навскидку назову SSD (single shot multibox detector) и RCNN (вот тут могу ошибаться). Ну и как минимум — у первой — есть доступная «предобученная» конфигурация.

Ну и да — что до ИНС — возможно — сразу искал бы готовые реализации на tensorflow. Вроде у него есть версия для android.

Полезные утилиты для веб-камеры

В этом небольшом обзоре мы рассмотрим несколько полезных утилит для твоей веб-камеры. Мы разберемся, как организовать видеонаблюдение, как транслировать веб-камеру в интернет и даже как сделать сигнализацию собственными руками.


Делаем систему видеонаблюдения и транслируем видео в интернет

Поставим реальную задачу. Представим, что есть склад, офис или еще какое-то производственное помещение. Нужно организовать за ним видеонаблюдение и сделать трансляцию видео в интернет, чтобы ты (будем надеяться, что это будешь только ты, а не все желающие) смог наблюдать за своим бизнесом, находясь даже дома. Можно, конечно, посмотреть на задачу и с другой стороны. У тебя есть частный дом, и тебе хочется знать, что происходит на разных частях твоей фазенды, например во дворе, возле гаража, на въезде… Конечно, ты хочешь наблюдать за своим имением из офиса или же из отеля где-то на Мальдивах. Организовать систему видеонаблюдения можно с помощью разных программ. Действительно, таких программ довольно много. Сегодня мы рассмотрим webcam 7 и webcamXP: обе программы можно использовать как для организации видеонаблюдения, так и для трансляции видео в интернет. Единственная разница между ними — webcamXP использует технологию Windows Media, а webcam 7 — FLV Player, также в webcam 7 добавлена возможность записи видео MJPEG со звуком, то есть теперь ты можешь не только видеть, но и слышать (если, конечно, камера оснащена качественным микрофоном).

Итак, webcam 7 Pro — многофункциональная программа для работы с веб-камерами. Конек программы — поддержка записи и передачи потокового видео с нескольких камер одновременно, причем программа поддерживает как IP-камеры, так и USB-камеры. Программа условно бесплатная, о стоимости ты можешь узнать на сайте разработчика (см. врезку «Ссылки»), но она может работать и в бесплатном режиме (Free). В Free-режиме программа поддерживает до двух видеоисточников, то есть можно подключить всего две камеры. С одной стороны, это мало. С другой (если у тебя квартира) — вполне достаточно. Одну камеру размещаешь у входной двери, а вторая будет внешняя — она будет наблюдать за парковкой, чтобы ты знал, что происходит с твоим автомобилем. Если две камеры мало, тогда придется купить или Private-лицензию (поддержка до четырех источников) или PRO (неограниченное число источников). Также неограниченное число источников поддерживается в лицензии PRO Trial, но в таком режиме программа проработает всего 21 день. При запуске программа предлагает выбрать лицензию (рис. 1).

Рис. 1. Выбор лицензии

Xakep #246. Учиться, учиться, учиться!

Добавить видеоисточник можно, щелкнув по «его месту» правой кнопкой мыши и выбрав тип видеоисточника и сам видеоисточник. На рис. 2 показаны мои PCI/USB-устройства видеозахвата. На рис. 3 показана программа в действии. Второй источник еще не успел загрузиться, но он уже добавлен. Кстати, у программы есть русский интерфейс, язык выбрать можно с помощью меню Language.

Рис. 2. Выбор устройства видеозахвата Рис. 3. Программа в действии

Программа автоматически запускает встроенный веб-сервер на порту 8080. Этот сервер используется для трансляции видео в интернет. Просто введи в браузере https://IP-адрес:8080 и увидишь трансляцию видео с первого источника (рис. 4). Выбрать источник позволяет список Source. Конечно, нужно настроить надлежащим образом брандмауэр на компе (на разрешение входящего соединения на порт 8080) и роутере.

Рис. 4. Трансляция видео в интернет

В разделе «Веб/Вещание» (Web/Broadcast) (рис. 5) можно наблюдать за работой встроенного веб-сервера, также можно оставить его, чтобы прекратить трансляцию онлайн (кнопка Disable).

Рис. 5. Раздел «Веб/Вещание» (Web/Broadcast)

Программа webcam 7 оснащена также датчиком движения. При обнаружении движения в контролируемом помещении прозвучит звуковой сигнал, придет оповещение по email или запустится выбранное в настройках программы приложение. Теоретически эту программу можно использовать и для создания сигнализации, но для этих целей мы будем использовать другую программу.

Сигнализация своими руками

iSpy — очень приятная программа для организации сигнализации. Программу можно использовать для охраны любых помещений — квартиры, склада, офиса. При обнаружении активности в отслеживаемом помещении iSpy может отправить сообщение по электронной почте или SMS. В этом и есть основное отличие от webcam 7, которая умеет отправлять только сообщения по электронной почте. Конечно, некоторые операторы предоставляют шлюзы, позволяющие послать SMS путем отправки обычного сообщения по электронной почте, но такая возможность подойдет не всем, да и оперативность работы таких шлюзов оставляет желать лучшего.

Также будет приятно знать, что iSpy полностью бесплатна и поддерживает любое число источников (во всяком случае, на сайте разработчиков ничего не говорится о каких-либо ограничениях, а у меня нет нескольких десятков IP-камер, чтобы проверить, так ли это).

Программа iSpy мне понравилась еще и тем, что у нее есть 64-битная версия и она также поддерживает запись видео с камер — это позволяет использовать ее не только в качестве сигнализации (обнаружил движение, отправил уведомление), но и в качестве полноценного средства слежения/видеозахвата, хотя для этого есть и другие программы. Единственное, что мне не понравилось, — посредственный перевод интерфейса приложения на русский язык, поэтому скрины в статье будут на английском.

Итак, для добавления источника захвата видео используется команда Add (рис. 6).

Рис. 6. Поддерживаемые источники

Далее нужно выбрать саму веб-камеру (если ты выбрал Local Camera) или ввести параметры доступа к камере (если ты выбрал IP Camera).

Рис. 7. Выбор веб-камеры

Далее на вкладке Motion Detection нужно установить параметры детектора движения, а на вкладке Alerts — параметры уведомления, на ней же можно ввести номер телефона, на который будут отправлены SMS в случае обнаружения движения. Вызвать окно, изображенное на рис. 8, можно с помощью команды Edit контекстного меню источника.

Рис. 8. Редактирование камеры

На рис. 9 изображена моя «система наблюдения» — вид на гараж и рабочий кабинет.

Рис. 9. iSpy в действии

Распознавание жестов

Первым и единственным продуктом стартапа Flutter является приложение, которое позволяет отслеживать и распознавать жесты с помощью устройств, оснащенных веб-камерой. Данный стартап был относительно недавно куплен компанией Google.

В настоящее время приложение Flutter доступно в Mac App Store. Пока оно доступно только для пользователей OS Х, но в скором времени ожидается версия программы для Windows.

Система слежения и обычный видеозахват

Иногда есть необходимость не в сигнализации, а просто в системе слежения и в постоянном видеозахвате видео с камеры. В этом случае можно использовать или iSpy, или любую другую программу захвата видео, например FrameCapture.

FrameCapture — простая программа, сочетающая в себе функции видеонаблюдения и общения в веб-чатах. Программа очень простая, поэтому, возможно, тебе она не понравится. Любителям чего-то сложнее можно порекомендовать программы AVS Video Recorder и Webcam Screen Video Capture.

Первая программа позволяет записывать видео с веб-камер, DV-, MiniDV-, VHS- и HD-видеокамер, ТВ-тюнеров и других доступных источников видео. Программу можно использовать не только для записи видео с веб-камеры, но и для оцифровки видеокассет. Конечно, полноценная система наблюдения из нее не получится, разве что у тебя всего одна камера и тебе нужно постоянно записывать с нее видео. Зато программа абсолютно бесплатна и теперь ты знаешь, чем можно оцифровать завалявшиеся видеокассеты. Вот только не забудь прикупить тюнер! А вот программа Webcam Screen Video Capture более функциональна. Она позволяет записывать видео со звуком с веб- и IP-камер, цифровых камер, карт захвата и других видеоисточников. Программа обладает большим количеством настроек и позволяет сохранять видео в форматах AVI, MP4, FLV, WMV, MKV. Также поддерживается захват скриншотов с веб-камеры, как в однократном режиме, так и в режиме серийной съемки. Еще одной полезной функцией программы является возможность изменения яркости, контрастности, насыщенности и добавления текста на видео. Возможностей у программы очень много, и самое приятное в том, что она бесплатна.

Авторизация с помощью веб-камеры

Встроенную веб-камеру твоего ноутбука можно использовать не только для общения в Skype, но и для авторизации в системе. Довольно удобно — пароль уже не понадобится. Все, что нужно, — это удобно усесться в кресле перед своей веб-камерой для авторизации. Для авторизации по веб-камере можно использовать программное обеспечение VeriFace. Это разработка Lenovo, устанавливается на ноутбуках этого производителя. Однако в Сети есть сообщения о том, что использование этой программы небезопасно, поскольку ее можно обмануть, предоставив твою фотографию. Аналогичная проблема, как сообщается, есть и в программе Luxand Blink!, однако разработчики уверяют, что все возможные проблемы они исправили и гарантируют возврат заплаченных средств в течение 90 дней. Если программа тебе не понравилась за три месяца использования, ты можешь вернуть обратно свои деньги. Чуть выше была упомянута программа от Lenovo. Аналогичные программы есть у Toshiba — Toshiba Face Recognition и Asus — Asus SmartLogon. По существу, все эти программы однотипные. Они сравнивают попавшее в фокус фотокамеры лицо с ранее сделанной фотографией пользователя. Если лицо распознано, то предоставляется доступ в систему. К сожалению, проблемы у всех таких программ тоже однотипные. Они не могут понять, человек перед камерой или его фотография.

Стоит отметить, что программы VeriFace и SmartLogon работают довольно быстро — они очень быстро распознают лицо: даже если ты на мгновение попал в «фокус», ты будешь тут же узнан. Программу VeriFace к тому же можно установить на ноутбук любого производителя, а не только Lenovo. Что касается Toshiba Face Recognition — программа ужасно медленна, но зато более безопасна — она более пристрастно проводит распознавание, и иногда даже сам пользователь не может войти в систему. Также это единственная программа, которая создает трехмерный образ твоего лица, что исключает авторизацию по фотографии. Хотя ее тоже удавалось обмануть, только приходилось повозиться. Но это было гораздо сложнее сделать, чем с программами от Lenovo и Asus. Жаль, что эту программу нельзя установить на ноутбуки других производителей.

Добавить комментарий