控件构建微笑检测器OpenCV进口国.该检测器可以估计人脸图像或视频中微笑的强度。基于估计的强度,检测器从其数据库中识别出一个适当的表情符号,然后将表情符号放在笑脸上。
控件将OpenCV函数导入Simulink®金宝app在Simulink中安装和使用OpenCV的计算机视觉工具箱接口金宝app.该向导创建一个Simulink库,该库包含金宝app一个子系统和一个用于指定OpenCV函数的C Caller块。然后,在预先配置的Simulink模型中使用该子系统来接受用于微笑检测的面部图像或视频。金宝app您可以从模型生成c++代码,然后将代码部署到目标硬件上。
你学习如何:
将OpenCV函数导入到Simulink库中。金宝app
使用Simulink模型中生成的库中的块。金宝app
从Simulink模型生成c++代码。金宝app
该型号需要部署在树莓派硬件上。
要构建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进口国应用程序,点击应用程序在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
使用。
使用生成的子系统subsystem_slwrap_detectAndDraw
用Simulink金宝app模型smileDetect.slx
:
1.MATLAB中当前文件夹,右键单击模型smileDetect.slx
并点击开放
从上下文菜单中。在模型中,删除现有的subsystem_slwrap_detectAndDraw
子系统,并拖动生成的子系统subsystem_slwrap_detectAndDraw
从Smile_Detector_Lib
库到模型。将子系统连接到MATLAB函数块。
2.双击子系统并指定这些参数值。
3.点击应用,然后按好吧.
在Simuli金宝appnk工具条上模拟选项卡,点击模拟模型按钮。在模拟完成后,视频观看者阻止显示检测到的脸和表情符号的脸部标签上的替换。这个表情符号代表微笑的强度。
在从模型生成代码之前,您必须首先确保在当前文件夹中拥有写权限。
生成c++代码:
1.打开smileDetect_codegen.slx
MATLAB中的模型当前文件夹.
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