微笑的检测在仿真软件中使用OpenCV的代码金宝app
这个例子展示了如何构建一个微笑探测器使用OpenCV进口国应用。探测器估计一个脸上的微笑强度图像或视频。根据探测器估计的强度,确定一个适当的emoji从其数据库,然后将emoji笑脸。
首先一个OpenCV函数导入仿真软件®后金宝app安装和使用计算机视觉工具箱OpenCV的接口模型金宝app。应用程序创建一个模型库,其中包含一个金宝app子系统和C调用者指定OpenCV块功能。然后用于预配置子系统仿真软件模型接受微笑的面部图像或视频检测。金宝app你可以从模型生成c++代码,然后在目标硬件部署代码。
您将了解如何:
一个OpenCV函数导入到一个模型库。金宝app
在仿真软件中使用块从生成的库模型。金宝app
从一个仿真软件模型生成c++代码。金宝app
覆盆子π硬件上部署模型。
设置你的c++编译器
构建OpenCV库,确定一个适用于您的操作系统兼容的c++编译器,所述可移植的C代码生成使用OpenCV库的功能。配置编译器使用墨西哥人设置c++
命令。有关更多信息,请参见选择一个c++编译器。
模型描述
在这个例子中,一个微笑探测器是通过使用仿真软件实现的模型金宝appsmileDetect.slx
。
在这个模型中,subsystem_slwrap_detectAndDraw
子系统驻留在Smile_Detect_Lib
图书馆。您将创建subsystem_slwrap_detectAndDraw
子系统通过使用OpenCV进口国应用。该子系统接受脸图像或视频,并提供这些输出值。
outImage
:脸图像与一个圈强度
:强度的微笑x
:x
协调的圆心y
:y
协调的圆心理查德·道金斯
:圆的半径
模型配置为使用金宝appSimulink.ImageType
数据类型。的outImage
的子系统金宝appSimulink.ImageType
数据类型。图像矩阵块的皈依者outImage
从金宝appSimulink.ImageType
MATLAB数值矩阵,因为一个功能块只作用于数值矩阵。
MATLAB功能块接受的输入subsystem_slwrap_detectAndDraw
子系统。MATLAB功能块有一组emoji图像。微笑强度emoji的这些图像范围从低到高。从emoji图片,估计的块确定最合适的emoji强度和表面图像的地方。然后提供给检测输出的脸和笑脸更换视频观众块。
示例文件夹复制到一个可写的位置
访问示例文件夹的路径,在MATLAB命令行,输入:
OpenCV金宝appSimulinkExamples;
每个子文件夹包含所有运行示例所需的支持文件。金宝app
做这些步骤之前,确保您将示例文件夹复制到一个可写的文件夹位置和改变你的当前工作目录…\ SmileDetector例子
。你所有的输出文件保存到该文件夹。
步骤1:导入OpenCV函数来创建一个模型库金宝app
1。开始OpenCV进口国应用程序,点击应用程序在MATLAB将来发布。在欢迎页面,指定项目名称作为Smile_Detector
。确保项目名称不包含任何空格。点击下一个。
2。在指定OpenCV图书馆,指定这些文件位置,然后单击下一个。
项目的根文件夹:指定文件夹的路径例子。这条路是可写的项目文件夹的路径,你救了你的示例文件。你所有的输出文件保存到该文件夹。
源文件:指定的路径
. cpp
文件在你的项目文件夹smiledetect.cpp
。包含文件:指定的路径
. hpp
头文件位于您的项目文件夹内smiledetect.hpp
。
3所示。分析你的图书馆找到导入的功能和类型。分析完成后,点击下一个。选择detectAndDraw
功能和点击下一个。
4所示。从导入,选择I / O型为inImage
作为输入
,然后单击下一个。
5。在创建模型库,配置O金宝apppenCV类型的默认值。默认情况下,创建一个单一C-caller OpenCV功能块选择创建一个C调用程序块的子系统生成的模型库。金宝app
6。选择配置库使用仿真软件。金宝appImageType信号配置生成的库子系统使用金宝appSimulink.ImageType
信号。
7所示。集Simlink的默认颜色格式。ImageType信号来RGB
,这是默认的颜色格式的图像。
8。集默认的阵列布局仿真软件。金宝appImageType信号来列为主
这是默认的阵列图像的布局。
9。创建一个模型库,点击金宝app下一个。
一个金宝app模型库Smile_Detector_Lib
从OpenCV代码创建项目的根文件夹。库包含一个子系统和C调用者。您可以使用任何这些块的仿真模型。在这个例子中,子系统subsystem_slwrap_detectAndDraw
使用。
步骤2:使用仿真软件中生成子系统模型金宝app
使用生成的子系统subsystem_slwrap_detectAndDraw
与仿真软件模型金宝appsmileDetect.slx
:
1。在MATLAB当前文件夹,右键单击模型smileDetect.slx
并点击开放从上下文菜单中。拖动生成子系统从图书馆到模型中。子系统连接到MATLAB功能块。
2。双击子系统和配置这些参数值:
行:
480年
列:
640年
渠道:
3
基本类型:
uint8
3所示。点击应用,然后单击好吧。
步骤3:模拟微笑探测器
在仿真软件将来金宝app发布的模拟选项卡上,单击运行模拟模型。仿真完成后,查看器块显示的视频检测。模型覆盖一个emoji脸上。emoji代表微笑的强度。
步骤4:从微笑检测器生成c++代码模型
从模型生成代码之前,您必须首先确保您拥有写权限在当前文件夹。
生成c++代码:
1。打开smileDetect_codegen.slx
模型从你当前的MATLAB文件夹。
2。在应用程序在仿真软件将来发布选项金宝app卡,选择嵌入式编码器。在c++代码选项卡中,选择设置列表,然后单击C / c++代码生成设置打开配置参数对话框。验证这些设置:
下代码生成面板>的目标选择节>语言被设置为
c++
。下代码生成面板>的目标选择节>语言标准被设置为
c++ 11 (ISO)
。下代码生成面板>接口>在数据交换接口节>阵列布局被设置为
行
。
3所示。如果你想生产c++代码生成,图像在哪里使用OpenCV类表示简历:垫
而不是c++类图片::数据类型::形象
实现的MathWorks®,下数据类型替换面板>选择使用OpenCV实现图像垫类。
4所示。连接生成子系统subsystem_slwrap_detectAndDraw
MATLAB函数块。
5。生成c++代码,下c++代码选项卡上,单击构建
按钮。模型完成建设后,生成的代码打开的代码视图。
6。你可以检查生成的代码。当一个模型包含的信号金宝appSimulink.ImageType
数据类型、代码生成器产生额外的共享工具文件。这些文件声明和定义公用事业建设、销毁,并返回信息元属性的图片:
image_type.h
image_type.cpp
构建过程创建一个ZIP文件smileDetect_with_ToOpenCV.zip
MATLAB在你当前的工作目录。
覆盆子π硬件上部署微笑探测器
在您部署模型之前,覆盆子π连接到你的电脑。等到硬件上的压水式反应堆里,领导开始闪烁。
在设置下拉列表中,单击硬件实现
打开配置参数对话框并验证这些设置:
设置硬件板来
覆盆子π
。的设备供应商被设置为手臂兼容
。在代码生成窗格中,在目标选择,语言设置为c++。下构建过程,Zip文件的名字被设置为
smileDetect_with_ToOpenCV.zip
。下工具链设置,工具链被指定为GNU GCC覆盆子π
。
将代码部署到你的树莓π硬件:
1。从生成的zip文件,这些文件复制到你的树莓π硬件。
smiledetect.zip
smileDetect.mk
main.cpp
2。在树莓π,去您保存文件的位置。生成一个精灵
文件,输入这个命令:
让- f smileDetect.mk
3所示。在树莓上运行可执行π。成功执行后,您看到的输出树莓πemoji放在脸图像。
smileDetect.elf
另请参阅
ToOpenCV|FromOpenCV|金宝appSimulink.ImageType