Придётся сделать ещё одну остановку перед рассмотрением действительно интересных функций компьютерного зрения.
Рассмотрим функции OpenCV для сохранения/считывания данных в файлы.
имеет механизмы сериализации/десериализации данных и возможность сохранять/считывать эти данные из XML-файлов.
— это комплект средств разработки для создания компонентов Urbi, т.н. — промежуточного слоя архитектуры URBI. Он так же поддерживает работу — скриптового языка, который используется для написания программ управления роботами.
Продолжим рассмотрение возможностей скриптового языка urbiScript от компании Gostai, предназначенного для управления роботами.
Напомню, что urbiScript выполняется на , который запускается либо на роботе, либо на компьютере и к которому можно подключиться через сеть простым telnet-ом.
Взаимодействие с аппаратной частью робота осуществляется через объекты , которые выполняют роль драйверов (прослойка между Urbi и аппаратной частью робота).
Данные драйвера реализуются в виде библиотек (.dll), подключаются к серверу Urbi и далее могут прозрачным образом использоваться в urbiScript (вызывать функции, изменять переменные).
Рассмотрим ещё немножко основ. Функции можно просто пробежать глазами — самое интересное в этом шаге — в самом конце приводятся куски кода обхода элементов матрицы и пикселей изображения.
CvArr — массив — его можно считать «абстрактным базовым классом» для CvMat и далее (CvArr->CvMat->IplImage)
typedef void CvArr;
Вы уже, наверное, обратили внимание, что прототипы функций OpenCV принимают в качестве параметров указатель на CvArr. Фактически это означает, что они принимают массив CvMat* или изображение IplImage*.
Кратко рассмотрим что из себя представляет urbiScript.
Как — urbiScript — это скриптовый язык, используемый для написания программ (скриптов) для управления роботами.
Важными чертами urbiScript являются:
* параллельность
* программирования на основе событий
* прототипное программирование (объекты могут изменяться «на лету»)
* синтаксис в стиле С++
urbiScript выполняется на Urbi-сервере, который запускается либо на роботе, либо на компьютере и к которому можно подключиться простым telnet-ом.
Для программирования модулей под Urbi потребуется компилятор:
Microsoft Visual Studio C++ 2008(2005)
Я мучился с попытками компиляции объектов из Visual Studio C++ 6.0, но безрезультатно.
В коде Urbi используются макросы с переменным числом аргументов и ещё разные нюансы, которые, похоже, реализованы только в более современных компиляторах .
Так что придётся остановиться на
Microsoft Visual Studio Express Edition
Для своей работы, OpenCV использует несколько различных типов данных. Структуру изображения — мы уже видели, а теперь рассмотрим другие самые часто используемые форматы.
По (которая является переводом статьи из википедии) всё же остаётся не совсем понятно — что же такое URBI и с чем его едят.
Однако, девиз компании Gostai — «Робототехника для всех» («Robotics for everyone») — не может не обнадёживать :)
Давайте разберёмся, что же именно из себя представляет URBI.
ROI (Region Of Interest — регион интересов — интересующая область изображения) — один из фундаментов OpenCV.
ROI позволяет пользователю задать определённую прямоугольную область изображения (т.е. ROI всегда должна находится внутри исходного изображения).
Почти все функции должны поддерживать работу с ROI, т.е. работу с выделенной областью изображения, что полезно для ускорения работы алгоритмов. Т.о. если нас интересует только определённая область изображения — можно её выделить и работать только с ней, не затрагивая всё изображение целиком.