В этом примере показано, как создать детектор улыбки при помощи Средства импорта OpenCV. Детектор оценивает интенсивность улыбки на изображении поверхности или видео. На основе предполагаемой интенсивности детектор идентифицирует соответствующий эмодзи от своей базы данных, и затем помещает эмодзи в улыбчивую поверхность.
Сначала импортируйте функцию OpenCV в Simulink® при помощи Установки и Использования Интерфейс Computer Vision Toolbox для OpenCV в Simulink. Мастер создает Библиотеку Simulink, которая содержит подсистему и блок C Caller для заданной функции OpenCV. Подсистема затем используется в предварительно сконфигурированной модели Simulink, чтобы принять лицевое изображение или видео для обнаружения улыбки. Можно сгенерировать Код С++ из модели, и затем развернуть код по целевому компьютеру.
Вы учитесь как:
Импортируйте функцию OpenCV в Библиотеку Simulink.
Используйте блоки из сгенерированной библиотеки в модели Simulink.
Сгенерируйте Код С++ из модели Simulink.
Разверните модель на оборудовании Raspberry Pi.
Чтобы создать библиотеки 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, нажмите 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
используется.
Использовать сгенерированную подсистему 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, и затем нажмите ОК.
На Панели инструментов Simulink, во вкладке Simulation, нажимают, симулируют кнопку модели. После того, как симуляция завершена, блоки Video Viewer отображают обнаруженную поверхность и замену эмодзи на вкладках поверхности. Эмодзи представляет интенсивность улыбки.
Прежде чем вы сгенерируете код из модели, необходимо сначала гарантировать, что у вас есть разрешение записи в вашей текущей папке.
Сгенерировать Код С++:
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 с вашим компьютером. Ожидайте, пока 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