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

В этом примере показано, как создать детектор улыбки при помощи Средства импорта OpenCV. Детектор оценивает интенсивность улыбки на изображении поверхности или видео. На основе предполагаемой интенсивности детектор идентифицирует соответствующий эмодзи от своей базы данных, и затем помещает эмодзи в улыбчивую поверхность.

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

Вы учитесь как:

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

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

  • Сгенерируйте Код С++ из модели Simulink.

  • Разверните модель на оборудовании Raspberry Pi.

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

Чтобы создать библиотеки OpenCV, идентифицируйте совместимый компилятор C++ для своей операционной системы, как описано в Портативной генерации кода C для Функций, Которые Пользуются Библиотекой OpenCV. Сконфигурируйте идентифицированный компилятор при помощи mex - устанавливают команду C++. Для получения дополнительной информации смотрите, Выбирают C ++ Compiler.

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

В этом примере детектор улыбки реализован при помощи модели Simulink smileDetect.slx.

В этой модели, subsystem_slwrap_detectAndDraw подсистема находится в Smile_Detect_Lib библиотека. Вы создаете subsystem_slwrap_detectAndDraw подсистема при помощи Средства импорта OpenCV. Подсистема принимает изображение поверхности или видео и обеспечивает эти выходные значения.

Функциональный блок MATLAB® принимает вход от subsystem_slwrap_detectAndDraw блок подсистемы. Блок MATLAB function имеет набор изображений эмодзи. Интенсивность улыбки эмодзи в этих изображениях располагается от низко до высоко. От изображений эмодзи блок идентифицирует самый соответствующий эмодзи для предполагаемой интенсивности и помещает его в изображение поверхности. Выход затем предоставляется Обнаруженной Поверхности и Улыбающимся блокам Средства просмотра Накладываемого видео.

Скопируйте папку в качестве примера в перезаписываемое местоположение

Получить доступ к пути к папке в качестве примера, в командной строке MATLAB, введите:

     OpenCVSimulinkExamples;

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

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

Шаг 1: импортируйте функцию OpenCV, чтобы создать библиотеку Simulink

1. Чтобы запустить приложение Средства импорта OpenCV, нажмите Apps на Панели инструментов MATLAB. В Странице приветствия задайте Название проекта как Smile_Detector. Убедитесь, что название проекта не содержит пробелов. Нажать Далее.

2. В Задают Библиотеку OpenCV, задают это расположение файлов, и затем нажимают Далее.

  • Корневая папка проекта: Задайте путь своей папки в качестве примера. Этот путь является путем к перезаписываемой папке проекта, где вы сохранили свои файлы в качестве примера. Все ваши выходные файлы сохранены в эту папку.

  • Исходные файлы: Задайте путь .cpp файл расположен в вашей папке проекта как smiledetect.cpp.

  • Включение файлов: Задайте путь .hpp заголовочный файл расположен в вашей папке проекта как smiledetect.hpp.

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

4. Из того, что импортировать, выберите I/O Type для inImage как Input, и затем нажмите Далее.

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

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

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

Использовать сгенерированную подсистему subsystem_slwrap_detectAndDraw с моделью Simulink smileDetect.slx:

1. В вашей Текущей папке MATLAB щелкните правой кнопкой по модели smileDetect.slx и нажмите Open из контекстного меню. В модели удалите существующий subsystem_slwrap_detectAndDraw подсистема и перетаскивает сгенерированную подсистему subsystem_slwrap_detectAndDraw от Smile_Detector_Lib библиотека к модели. Соедините подсистему с блоком MATLAB function.

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

3. Нажмите Apply, и затем нажмите ОК.

Шаг 3: симулируйте детектор улыбки

На Панели инструментов Simulink, во вкладке Simulation, нажимают, симулируют кнопку модели. После того, как симуляция завершена, блоки Video Viewer отображают обнаруженную поверхность и замену эмодзи на вкладках поверхности. Эмодзи представляет интенсивность улыбки.

Шаг 4: сгенерируйте код С++ из модели детектора улыбки

Прежде чем вы сгенерируете код из модели, необходимо сначала гарантировать, что у вас есть разрешение записи в вашей текущей папке.

Сгенерировать Код С++:

1. Откройте smileDetect_codegen.slx модель от вашей Текущей папки MATLAB.

2. на вкладке Apps на панели инструментов Simulink выберите Embedded Coder. На вкладке C ++ Code в Настройках выпадающий список нажмите C/C++ Code generation settings открыть диалоговое окно Configuration Parameters и проверить эти настройки:

  • В панели Генерации кода, при Целевом выборе, Язык установлен в C++.

  • В Интерфейсе под Генерацией кода размещение Массивов в категории интерфейса Обмена данными установлено в Row-major.

3. Соедините сгенерированную подсистему subsystem_slwrap_detectAndDraw к блоку MATLAB function.

4. Чтобы сгенерировать Код С++, под вкладкой C ++ Code, нажимают Generate Code выпадающий список, и затем нажимает Build. После того, как модель закончила генерировать код, Отчет Генерации кода открывается. Можно смотреть сгенерированный код. Процесс сборки создает zip-файл под названием smileDetect_with_ToOpenCV.zip в вашем текущем MATLAB рабочая папка.

Разверните детектор улыбки на оборудовании Raspberry Pi

Прежде чем вы развернете модель, соедините Raspberry Pi с вашим компьютером. Ожидайте, пока PWR Не Вовлек оборудование, начинает мигать.

В Настройках выпадающий список нажмите Hardware Implementation открыть диалоговое окно Configuration Parameters и проверить эти настройки:

  • Установите Аппаратную плату на Raspberry Pi. Поставщик Устройства установлен в ARM Compatible.

  • В панели Генерации кода, при Целевом выборе, Язык установлен в C++. При Процессе сборки имя zip-файла определяется к smileDetect_with_ToOpenCV.zip. При настройках Toolchain Набор инструментальных средств задан как GNU GCC Raspberry Pi.

Развернуть код в ваше оборудование Raspberry Pi:

1. Из сгенерированного zip-файла скопируйте эти файлы в свое оборудование Raspberry Pi.

  • smiledetect.zip

  • smileDetect.mk

  • main.cpp

2. В Raspberry Pi перейдите к местоположению, где вы сохранили файлы. Сгенерировать elf файл, введите эту команду:

   make -f smileDetect.mk

3. Запустите исполняемый файл на Raspberry Pi. После успешного выполнения вы видите выход на Raspberry Pi с эмодзи, помещенным в изображение поверхности.

   smileDetect.elf

Смотрите также

|

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте