主要内容

在Simulink中使用OpenCV代码进行微笑检测金宝app

控件构建微笑检测器OpenCV进口国.该检测器可以估计人脸图像或视频中微笑的强度。基于估计的强度,检测器从其数据库中识别出一个适当的表情符号,然后将表情符号放在笑脸上。

控件将OpenCV函数导入Simulink®金宝app在Simulink中安装和使用OpenCV的计算机视觉工具箱接口金宝app.该向导创建一个Simulink库,该库包含金宝app一个子系统和一个用于指定OpenCV函数的C Caller块。然后,在预先配置的Simulink模型中使用该子系统来接受用于微笑检测的面部图像或视频。金宝app您可以从模型生成c++代码,然后将代码部署到目标硬件上。

你学习如何:

  • 将OpenCV函数导入到Simulink库中。金宝app

  • 使用Simulink模型中生成的库中的块。金宝app

  • 从Simulink模型生成c++代码。金宝app

  • 该型号需要部署在树莓派硬件上。

设置你的c++编译器

要构建OpenCV库,请为您的操作系统标识一个兼容的c++编译器,如中所述使用OpenCV库的函数的可移植C代码生成.使用mex -setup c++命令配置已识别的编译器。有关更多信息,请参见选择一个c++编译器

模型描述

在本例中,微笑检测器是通过使用Simulink模型实现的金宝appsmileDetect.slx

在这个模型中subsystem_slwrap_detectAndDraw子系统位于Smile_Detect_Lib图书馆。您将创建subsystem_slwrap_detectAndDraw子系统,使用OpenCV进口国.子系统接受人脸图像或视频,并提供这些输出值。

MATLAB®函数块接受来自subsystem_slwrap_detectAndDraw子系统。MATLAB函数块有一组表情符号图像。这些图片中表情符号的微笑强度从低到高。从表情符号图像中,该块识别出最适合估计强度的表情符号,并将其放在人脸图像上。然后将输出提供给检测人脸和笑脸替换视频查看器块。

复制示例文件夹到可写位置

要访问示例文件夹的路径,在MATLAB命令行,输入:

OpenCV金宝appSimulinkExamples;

每个子文件夹包含运行示例所需的所有支持文件。金宝app

在继续执行这些步骤之前,请确保将示例文件夹复制到可写文件夹位置,并将当前工作文件夹更改为…\ SmileDetector例子.所有输出文件都保存到这个文件夹中。

步骤1:导入OpenCV函数来创建Simulink库金宝app

1.开始OpenCV进口国应用程序,点击应用程序在MATLAB工具条。在欢迎页面中,指定项目名称作为Smile_Detector.确保项目名称不包含任何空格。点击下一个

2.在“指定OpenCV库”中指定这些文件位置,然后单击下一个

  • 项目的根文件夹:指定示例文件夹的路径。此路径是保存示例文件的可写项目文件夹的路径。所有输出文件都保存到这个文件夹中。

  • 源文件:指定路径. cpp位于项目文件夹中的文件smiledetect.cpp

  • 包含文件:指定路径. hpp位于项目文件夹中的头文件为smiledetect.hpp

3.分析您的库以找到要导入的函数和类型。分析完成后,点击下一个.选择detectAndDraw功能和点击下一个

4.从要导入的内容中选择I / O型inImage作为输入,然后按下一个

5.在Create Si金宝appmulink Library中,验证默认值并单击下一个

一个金宝app模型库Smile_Detector_Lib从OpenCV代码创建到项目根文件夹。这个库包含一个子系统和一个C Caller块。您可以使用这些模块中的任何一个进行模型模拟。在这个例子中,子系统subsystem_slwrap_detectAndDraw使用。

步骤2:在Simulink模型中使用生成子系统金宝app

使用生成的子系统subsystem_slwrap_detectAndDraw用Simulink金宝app模型smileDetect.slx

1.MATLAB中当前文件夹,右键单击模型smileDetect.slx并点击开放从上下文菜单中。在模型中,删除现有的subsystem_slwrap_detectAndDraw子系统,并拖动生成的子系统subsystem_slwrap_detectAndDrawSmile_Detector_Lib库到模型。将子系统连接到MATLAB函数块。

2.双击子系统并指定这些参数值。

3.点击应用,然后按好吧

步骤3:模拟微笑探测器

在Simuli金宝appnk工具条上模拟选项卡,点击模拟模型按钮。在模拟完成后,视频观看者阻止显示检测到的脸和表情符号的脸部标签上的替换。这个表情符号代表微笑的强度。

步骤4:从微笑检测器模型生成c++代码

在从模型生成代码之前,您必须首先确保在当前文件夹中拥有写权限。

生成c++代码:

1.打开smileDetect_codegen.slxMATLAB中的模型当前文件夹

2.在应用程序选项卡上的Simuli金宝appnk工具条,选择嵌入式编码器。在c++代码选项卡中设置下拉列表中,单击C/ c++代码生成设置打开“配置参数”对话框,验证这些设置:

  • 代码生成窗格中,在目标选择语言设置为c++。

  • 接口代码生成阵列布局数据交换接口类别设置为

3.连接生成的子系统subsystem_slwrap_detectAndDraw到MATLAB函数块。

4.生成c++代码,下c++代码选项卡上,单击生成代码下拉列表,然后单击构建.在模型完成代码生成之后,代码生成报告将打开。您可以检查生成的代码。构建过程创建一个名为smileDetect_with_ToOpenCV.zip在你当前的MATLAB工作文件夹中。

在树莓派硬件上部署微笑检测器

在您部署模型之前,请将树莓派连接到您的计算机。等待硬件上的PWR指示灯开始闪烁。

设置下拉列表中,单击硬件实现打开“配置参数”对话框,验证这些设置:

  • 设置硬件板覆盆子π.的设备供应商被设置为手臂兼容

  • 代码生成窗格中,在目标选择语言设置为c++。下构建过程Zip文件的名字被设置为smileDetect_with_ToOpenCV.zip.下工具链设置,工具链被指定为GNU GCC树莓派

要将代码部署到您的树莓派硬件上:

1.从生成的zip文件,复制这些文件到您的树莓派硬件。

  • smiledetect.zip

  • smileDetect.mk

  • main.cpp

2.在树莓派中,进入保存文件的位置。生成一个精灵文件,输入这个命令:

让- f smileDetect.mk

3.在树莓派上运行可执行文件。成功执行后,您将看到树莓派的输出,并在面部图像上放置一个表情符号。

smileDetect.elf

另请参阅

|

相关的话题