Робототехника является будущим высоких технологий. В настоящее время робототехника является и областью научного знания, и промышленной отраслью, и технологическим процессом, и учебным предметом в школах, колледжах и в высших учебных заведениях.
Основу робототехники составляет компьютерное зрение, так как функционирование робота чаще всего напрямую зависит от обработки информации с датчиков. Информация с камер робота обрабатывается контроллером и работающей на нем специальной программой.
В процессе обучения робототехнике для демонстрации возможностей компьютерного зрения можно не писать код, а воспользоваться готовыми библиотеками. Тем более, что алгоритмы машинного зрения математически сложны и массивны с точки зрения формализации и алгоритмической реализации.
Наиболее используемой в робототехнике является библиотека OpenCV. Данная библиотека совместима с Си-ориентированными языками, поддерживает интерфейсы C, C++, Python, Java, содержит реализацию около 2500 алгоритмов компьютерного зрения и, что важно, распространяется по свободной лицензии и является бесплатной для использования как в учебных, так и в коммерческих целях.
Знакомство с возможностями данной библиотеки, подбор наиболее оптимального метода для решения задач робототехнического комплекса, следует начинать с реализации алгоритма на компьютере в выбранной программной среде. В качестве такой среды рассмотрим Visual Studio, обладающую свойствами доступности, функциональности, производительности и универсальности.
Прежде чем демонстрировать ученикам возможности компьютерного зрения на базе Visual Studio и OpenCV, необходимо выполнить установку и настройку данных программных продуктов. В сети Интернет существует много ресурсов, описывающих данный процесс, но все они обладают одним недостатком – установка и настройка библиотеки OpenCV под проект среды Visual Studio рассматривается для конкретной версии как библиотеки, так и среды программирования и не подходит для другого сочетания версий программных продуктов. Также при появлении новой версии библиотеки OpenCV все предыдущие описания ее настроек для работы в среде Visual Studio становятся неактуальными.
Столкнувшись с вышеописанными сложностями, особенно на фоне необходимости объяснения ученикам процесса настройки OpenCV на их домашнем компьютере, автор попытался разработать методические указания в виде универсального алгоритма установки и настройки данной библиотеки под среду Visual Studio и операционную систему семейства Windows.
Универсальный алгоритм состоит из трех базовых шагов – установка библиотеки OpenCV, настройка проекта среды Visual Studio, проверка выполненных действий путем запуска простейшей программы компьютерного зрения.
Установка OpenCV
- На первом шаге необходимо скачать архив библиотеки OpenCV с последней работоспособной версией для операционной системы компьютера пользователя.
- Далее нужно распаковать архив библиотеки в заранее подготовленную папку, например, в папку C:/OpenCV.
- Для подключения dll файлов библиотеки необходимо настроить переменную окружения PATH.
[Для 64-х разрядной системы] C:/OpenCV/build/x64/vc10/bin;C:/OpenCV/build/common/tbb/intel64/vc10;
[Для 32-х разрядной системы] C:/OpenCV/build/x86/vc10/bin;C:/OpenCV/build/common/tbb/ia32/vc10;
Обратите внимание, что папка vc10 соответствует Visual Studio 2012. Источник [1] предлагает следующее соотношение версий среды программирования и целевой папки:
…/x86/vc12 – Visual Studio 2013, для x86 платформы,
…/x86/vc11 – Visual Studio 2012, для x86 платформы,
…/x86/vc12 – Visual Studio 2010, для x86 платформы,
…/x64/vc12 – Visual Studio 2013, для x64 платформы,
…/x64/vc11 – Visual Studio 2012, для x64 платформы,
…/x64/vc12 – Visual Studio 2010, для x64 платформы.
На самом деле, в случае реализации простейших или стандартных программ, жесткой привязки версии Visual Studio к местонахождению папок с dll или lib файлами нет. Чаще всего, выбирают папку с нумерацией на единицу меньше, чем версия среды программирования.
Настройка OpenCV
Настройка OpenCV зависит от трех факторов – версии среды Visual Studio, версии библиотеки OpenCV, разрядности операционной системы Windows.
- На первом шаге нужно запустить среду Visual Studio и создать пустой проект C++. В случае 64 разрядной системы дополнительно необходимо выбрать нужную платформу командой Build menu -> Configuration Manager.
- На втором шаге необходимо вызвать свойства созданного проекта и настроить доступ к библиотекам при помощи команды Linker -> General -> Additional Library Directories
[Для 64-х разрядной системы] C:/OpenCV/build/x64/vc10/lib;
[Для 32-х разрядной системы] C:/OpenCV/build/x86/vc10/lib;
Обратите внимание, что вместо C:/OpenCV нужно использовать собственный адрес установки программной библиотеки, вместо x64/vc10 – путь, соответствующий разрядности операционной системы и версии среды Visual Studio, выбираемый по аналогии с настройками переменной окружения.
3. На третьем шаге нужно добавить ссылки на библиотечные файлы при помощи команды Linker -> Input -> Additional Dependencies. Для версии OpenCV 2.4.2 список дополнительных библиотечных файлов приведен ниже. При этом цифры 242 в конце наименований показывают на версию библиотеки. В случае версии OpenCV 2.4.9 следует вместо opencv_core242.lib написать opencv_core249.lib и далее по аналогии.
opencv_core242.lib
opencv_imgproc242.lib
opencv_highgui242.lib
opencv_ml242.lib
opencv_video242.lib
opencv_features2d242.lib
opencv_calib3d242.lib
opencv_objdetect242.lib
opencv_contrib242.lib
opencv_legacy242.lib
opencv_flann242.lib
Также, выше приведенный список следует писать для режима Release. Для режима Debug данный список будет выглядеть немного иначе, с добавленной в конце буквой d. Хорошим стилем будет выполнить две настройки – и для режима Release и для режима Debug.
opencv_core242d.lib
opencv_imgproc242d.lib
opencv_highgui242d.lib
…
4. На четвертом шаге нужно настроить директории Include при помощи команды General -> Additional Include Directories.
[Для 64-х и 32-х разрядных систем]
C:/OpenCV/build/include/opencv; C:/OpenCV/build/include;
Проверка установки и настройки
Для проверки правильности действий по установке и настройке нужно запустить любой код из любого учебника по OpenCV, например, классический «Hello, World» из источника [2].
Типичные ошибки
Часто встречаемыми ошибками установки и настройки библиотеки OpenCV под среду Visual Studio являются ошибки, связанные с невозможностью системы найти dll или lib файлы.
Если системе не удается найти dll файл, то следует еще раз проверить настройки переменной PATH, перезагрузить Visual Studio, так как настройки, связанные с переменными окружения, Visual Studio определяет на этапе загрузки и возможно была нарушена последовательность установки и настройки. В крайнем случае, требуемой системой dll файл можно просто скопировать в файл проекта.
Если системе не удается найти библиотечный файл, то следует еще раз проверить настройки свойств проекта. В крайнем случае, можно прописать явное указание библиотечных файлов в заголовочном файле проекта, например:
# pragma comment (lib, “opencv_core231d.lib”)
# pragma comment (lib, “opencv_highgui231d.lib”)
# pragma comment (lib, “opencv_imgproc231d.lib”)
Если появилась ошибка 0x00007b, то необходимо проверить, не перепутаны ли настройки, связанные с разрядностью системы.
Вывод
Графическая библиотека OpenCV является универсальным средством как для поддержки профессиональных алгоритмов распознавания образов, так и для пропедевтики основ компьютерного зрения. Результатом написания данной статьи стал универсальный алгоритм установки и настройки графической библиотеки OpenCV под операционную систему семейства Windows и среду Visual Studio. Данные методические указания можно использовать при планировании практических занятий в рамках дополнительного образования школьников и в рамках преподавания дисциплин средне специальной и высшей школы, в качестве раздаточного материала при организации самостоятельной работы.
Библиографический список
- Дашевский, О. Библиотека OpenCV [Электронный ресурс] / О. Дашевский // Режим доступа: http://oop.afti.ru/materials/32 – (Дата обращения: 29.10.2016).
- OpenCV шаг за шагом. [Электронный ресурс] / Режим доступа: http://robocraft.ru/page/opencv/ – (Дата обращения: 30.10.2016).