OpenCV - свободная библиотека компьютерного зрения реального времени написанная на С/С++. Она обладает довольно мощным математическим аппаратом для распознавания образов, трансформации и анализа изображения. В ее состав также входят инструменты для работы с видео камерой и простенький тулкит для создания GUI интерфейсов. Для демонстрации работы с этими инструментами я использую привязку opencv к питону .
Что нам потребуется?
1. Конечно вебкамера подключенная к компьютеру. У меня используется встроенная камера в ноут и моя Ubuntu видит ее в /dev/video0
2. Установим пакет для работы с opencv из питона
Скрипт
Что нам потребуется?
1. Конечно вебкамера подключенная к компьютеру. У меня используется встроенная камера в ноут и моя Ubuntu видит ее в /dev/video0
2. Установим пакет для работы с opencv из питона
$ sudo apt-get install python-opencvВ принципе больше ничего и не нужно .
Скрипт
#! /usr/bin/env python # -*- coding: utf-8 -*- from opencv import cv from opencv import highgui DEV = 0 #номер устройства /dev/video0 if __name__ == '__main__': # Создаем окно для вывода изображения с камеры highgui.cvNamedWindow('Camera', highgui.CV_WINDOW_AUTOSIZE) highgui.cvMoveWindow('Camera', 10, 10) # Захватываем камеру capture = highgui.cvCreateCameraCapture(DEV) # Рабочий цикл, выход по нажатию 'q' key = '' while key != 'q': # Получаем снимок с камеры и выводим его на окно frame = highgui.cvQueryFrame(capture) highgui.cvShowImage('Camera', frame) # Ждем 5 мс нажатие клавиши key = highgui.cvWaitKey(5)
Алгоритм работы . Сначала, инициализируем окно куда будем отправлять изображение с камеры. Отметим что обращение к окну осуществляется через строковую константу (имя) Camera. Затем захватим камеру метод cvCreateCameraCapture(index) принимает в качестве аргумента номер камеры, у меня камера одна и она под номером 0 (DEV = 0). Дальше сам рабочий цикл: получаем снимок с камеры и показываем его в окне. Затем 5 мс ждем нажатия клавиши, если q - выход, если нет следующий кадр.
Заключение
Как видно из выше описанного примера, осуществлять доступ к камере из opencv легко и просто, но использовать данную библиотеку только для этих целей, все равно что забивать гвозди микроскопом=) Получая кадры с камеры (в нашем примере frame) мы можем подвергать их анализу, фильтрации, искать образы, определять расстояния и скорости перемещения предметов и т.д. Данный скрипт демонстрирует, что не смотря на свою мощь данная библиотека довольно легко осваивается и при достаточном знании математического аппарата, позволит создавать интересные вещи.
Ссылки:
OpenCV - официальный сайт проекта
Gist - данный пример на GitHub

Скажите, а привязка OpenCV + Python, работает для Python2 или Python3 или для Python2 и Python3 одновременно?
ОтветитьУдалитьПо текущему состоянию, opencv официально поддерживает питон 2.6 и 2.7. Подержка 3го питона - unknown. Как то так =)
ОтветитьУдалитьСпасибо. Лёгкий пример :) все получилось. Новеньким необходимо пояснить код более детально, я о отступах в коде, влияющие на работоспособность программы. Не все новенькие знают данный нюанс.
ОтветитьУдалитьУ каждого материала свой читатель.. некоторым надо объянять, что такое переменная и Python :-) Я не хотел утомлять других, кто уже это знает. Спасибо за комплимент.
УдалитьЗдравствуте статья очень понравилась, а вы случайно не знаете сайтов с подобным матерялом на руском,только посложнее и побольше, например определение обектов по цвету, заранее спасибо.
ОтветитьУдалитьЗдравствуйте. Спасибо на добром слове. К сожалению я давно все это писал и уже не занимаюсь этим, поэтому ничего не посоветую.
Удалить