[Перевод] Упрощаем работу с алгоритмами компьютерного зрения при помощи пакета OpenCV Intel INDE

Не так давно лучшим ресурсом для ознакомления с алгоритмами компьютерного зрения был сайт библиотеки алгоритмов компьютерного зрения с открытым исходным кодом OpenCV. Эти алгоритмы приходилось создавать и настраивать самостоятельно, попутно осваивая CMake и другие межплатформенные инструменты. Итоговый результат мог не подойти нужной платформе. В этом случае необходимо было тщательно изучить алгоритм и настроить его для собственной системы —, а это означало освоить OpenCL и его оптимизацию для своей платформы. Не то чтобы это было плохо…

Теперь приступить к работе с алгоритмами компьютерного зрения можно при помощи программного пакета Intel INDE, последнее обновление которого включает в себя готовую версию OpenCV, подходящую для устройств Windows и Android с процессорами Intel с графическим ядром Intel.
Раньше я уже сталкивался с библиотекой OpenCV. Это была версия 2.4.8, и мне пришлось приложить немало усилий для ее настройки, прежде чем процесс стал по-настоящему интересным. Я решил узнать, станет ли работа удобнее с появлением пакета Intel® INDE. Меня ждал приятный сюрприз.

Для начала необходимо скачать и установить OpenCV Intel® INDE (для этого также потребуется получить дополнительный серийный номер бета-версии). В нем вы обнаружите две очень полезные функции: мастер OpenCV, при помощи которого можно создавать приложения OpenCV, и дополнение Image Watch от Microsoft, позволяющее просматривать промежуточные результаты работы.

Начнем с мастера. Запустите Microsoft Visual Studio. Выберите пункт OpenCV, а затем — OpenCV Project for Windows (Проект OpenCV для Windows). Нажмите ОК.

e17dc3376fe44e61a53255a5de7f9743.png

Выполните сборку и запустите проект. Если у вас есть камера, при запуске приложения будет активирован детектор края Кэнни. Если камеры нет, на экране появятся два окна:

Входное изображение
759564849c634df788aaaec6a45f762c.png

Выходное изображение
b6e665da9fb5498e888b6e157821a35f.png

Выглядит неплохо, но рассматривать изображение по умолчанию не особенно интересно. Я решил применить детектор края Кэнни к фотографии Генри — собаки нашего специалиста по вычислительной архитектуре Стивена Джанкинса:

ddd9cc1a56bc42bbbfb642778a050273.jpg

Обычный рабочий процесс таков: изображение преобразовывается в режим градаций серого, а затем к нему применяется детектор края Кэнни. Результаты каждого этапа обработки можно просматривать с помощью подключаемого модуля Image Watch, установленного вместе с пакетом OpenCV Intel INDE. Для этого понадобится подключить модуль и внести пару изменений в код.
Нужно сделать так, чтобы фотография Генри была загружена в формате .ppm, а не .jpg. Обратите внимание, что OpenCV выполняет загрузку различных форматов изображений прозрачно. Помимо этого, для работы подключаемого модуля Image Watch нам необходимо изменить код и преобразовать изображения из UMat (стандартного формата OpenCV 3.0) в формат cv: Mat, ожидаемый плагином Image Watch:

#ifdef _DEBUG
                {
                        //Проверка содержимого изображения в ImageWatch с помощью метода getMat:  
                        cv::Mat mTest = imgInp.getMat(cv::ACCESS_READ);
                        //Разместите здесь оператор break и понаблюдайте за mTest в ImageWatch:
                        int stub = 0;
                        //mTest.release() вызывается автоматически, как для любой другой стековой переменной.
                }
#endif 

Теперь добавим похожий код в трех точках: 1) после загрузки изображения, 2) после его преобразования в режим градаций серого и 3) после использования детектора края Кэнни. В каждом случае добавим точки останова рядом с переменной stub. Далее необходимо подключить модуль Image Watch с помощью меню View > Other Windows > Image Watch в Microsoft Visual Studio:

823ff672bf2b43e886b43021f749af11.png

При работе с кодом в режиме отладки в каждой точке останова можно просматривать изменения, которые появляются в изображении Генри под воздействием детектора края Кэнни:

c5f1f55269a94dd9bff82d5972f57829.jpg

f15be38cfa6c4b66bee3f6c02c6c85d5.jpg

bb7ea4a8195c4ba0a400b52111a3e488.jpg

Вот это уже гораздо интереснее! Мне не только не нужно самостоятельно выполнять сборку OpenCV — теперь я могу разрабатывать приложения OpenCV для графической платформы процессоров Intel и выполнять в них отладку без дополнительных настроек. С дополнительной информацией можно ознакомиться по ссылкам ниже.
Далее вы найдете исчерпывающие сведения о OpenCV Intel® INDE на английском языке.

© Habrahabr.ru