Обнаружение теней при помощи кода OpenCV в Simulink

В этом примере показано, как обнаружить тени в записанном видео с помощью OpenCV Importer.

Сначала импортируйте функцию OpenCV в Simulink ® с помощью интерфейса Install and Use Computer Vision Toolbox для OpenCV в Simulink. Мастер создает библиотеку Simulink, содержащую подсистему и блок C Caller для указанной функции OpenCV. Подсистема затем используется в предварительно сконфигурированной модели Simulink, чтобы принять записанное видео и пороговое значение для теневого обнаружения. Обнаружение тени работает с порогом значением. Пороговое значение может быть изменено с помощью компонента ползунка, доступного в модели.

Вы узнаете, как:

  • Импортируйте функцию OpenCV в библиотеку Simulink.

  • Используйте блоки из сгенерированной библиотеки в модели Simulink.

Настройте компилятор C++

Чтобы создать библиотеки OpenCV, определите совместимый компилятор C++ для вашей операционной системы, как описано в Portable C Code Generation для функций, которые используют библиотеку OpenCV. Сконфигурируйте идентифицированный компилятор с помощью команды mex -setup c++. Для получения дополнительной информации смотрите Выбор компилятора C++.

Описание модели

В этом примере детектор теней реализован с помощью модели Simulink ShadowDetection.slx.

В этой модели subsystem_slwrap_run_shadow_detection подсистема находится в Shadow_Detection_Lib library. Вы создаете subsystem_slwrap_run_shadow_detection подсистема при помощи OpenCV Importer. Подсистема принимает видео из блока From Multimedia Файла и порога значение, чтобы обнаружить тень в видео. Выход отображается с помощью блока Video Viewer. В subsystem_slwrap_run_shadow_detection подсистема, inImage является вход изображением, thresh - порог алгоритма и outImage - выходное изображение. Ползунок порога используется для изменения значения порога во время симуляции.

Копировать папку примера в расположение с возможностью записи

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

     OpenCVSimulinkExamples;

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

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

Шаг 1: Импорт функции OpenCV для создания библиотеки Simulink

1. Чтобы запустить приложение OpenCV Importer, нажмите приложения на панели инструментов MATLAB. На странице приветствия укажите имя проекта следующим Shadow_Detection. Убедитесь, что имя проекта не содержит пространств. Нажмите кнопку Далее.

2. В разделе «Задать библиотеку OpenCV» укажите эти расположения файлов и нажмите кнопку Далее.

  • Проецируйте корневую папку: Укажите путь к вашей папке примера. Этот путь является путем к папке проекта с возможностью записи, где вы сохранили свои файлы примера. Все ваши выходные файлы сохраняются в этой папке.

  • Исходные файлы: Укажите путь к .cpp файл, расположенный в папке проекта как shadow_detection.cpp.

  • Включить файлы: Укажите путь к .hpp файл заголовка, расположенный в папке проекта следующим shadow_detection.hpp.

3. Проанализируйте библиотеку, чтобы найти функции и типы для импорта. После завершения анализа нажмите кнопку Далее. Выберите run_shadow_detection и нажмите кнопку Далее.

4. Из списка «Что импортировать» выберите I/O Type для inImage и thresh как Input, outImage как выход, а затем нажмите кнопку Далее.

5. В разделе «Создание библиотеки Simulink» проверьте значения по умолчанию и нажмите кнопку «Далее».

A Библиотеки Simulink Shadow_Detection_Lib создается из кода OpenCV в корневую папку проекта. Библиотека содержит подсистему и блок C Caller. Можно использовать любой из этих блоков для симуляции модели. В этом примере подсистема subsystem_slwrap_run_shadow_detection используется.

Шаг 2: Используйте сгенерированную подсистему в модели Simulink

Чтобы использовать сгенерированную подсистему subsystem_slwrap_run_shadow_detection с моделью Simulink ShadowDetection.slx:

1. В текущей папке MATLAB щелкните правой кнопкой мыши модель ShadowDetection.slx и нажмите Open из контекстного меню. Перетащите сгенерированную подсистему subsystem_slwrap_detectAndDraw в модель. Подключите подсистему к блоку MATLAB Function.

2. Дважды кликните подсистему и задайте эти значения параметров.

3. Нажмите кнопку Применить, а затем кнопку ОК.

Шаг 3. Моделируйте детектор теней

На панели инструментов Simulink, на вкладке Simulation, щелкните на симуляции модели. После завершения симуляции блок Video Viewer отображает видео с тенями, отмеченными красным контуром в зависимости от порогового значения. Для отображаемого примера видео пороговое значение устанавливается равным 0.0651.

См. также

|

Похожие темы