主要内容

覆盆子π硬件上部署一个边缘检测算法

这个示例向您展示如何部署一个边缘检测函数的覆盆子π™硬件作为一个独立的可执行文件为覆盆子π硬件使用MATLAB®支持包。万博1manbetx在这个例子中,您将学习如何获得生活的形象从一个摄像头连接到覆盆子π硬件,运行获得图像的边缘检测函数,并在监视器上显示结果连接到相同的覆盆子π硬件。

你也可以部署边缘检测函数从MATLAB®在线™。看到连接到覆盆子π硬件板在MATLAB在线连接到覆盆子π硬件在线MATLAB和部署MATLAB函数。

简要概述在这个例子中,看到的覆盆子π硬件上部署一个边缘检测算法视频。

先决条件

在你开始与这个例子中,我们建议你完成这些例子:

所需的产品s manbetx 845

  • 覆盆子π硬件。确保硬件连接到互联网,当工作在MATLAB®在线™。

  • 一个万博1manbetx受支持的USB摄像头或者一个覆盆子π相机模块

  • 监视器连接到覆盆子π硬件

  • MATLAB编码器许可证

步骤1:创建并运行一个存储图像边缘检测算法

1。复制edgeDetection粘贴在MATLAB函数编辑器。函数实现一个算法来阅读peppers.png文件从电脑,应用边缘检测算法peppers.pngMATLAB图,显示结果。算法由一个3×3 Sobel算子应用于图像在水平和垂直方向,然后阈值对一个常数值。

edgeDetection()函数%定义卷积内核用于边缘检测kern = [1 2 1;0 0 0;1 2 1];%从文件读取图像并应用img = imread (“peppers.png”);h = conv2 (img(:,: 2),克恩,“相同”);v = conv2 (img(:,: 2),克恩”、“相同”);e =√h。* h + v * v);edgeImg = uint8 (e > 100) * (240);imshow (edgeImg); end

2。保存功能edgeDetection.m你有写访问到一个文件夹。

3所示。运行edgeDetection函数通过使用MATLAB命令窗口运行命令。当您运行这个函数,MATLAB开始执行上的边缘检测算法peppers.png文件存储在你的电脑。

运行edgeDetection

步骤2:修改边缘检测算法使用活的形象从硬件

在部署之前,运行edgeDetection函数通过使用输入和输出(IO)从生活建议的硬件。

使用活IO使您能够:

  • 验证MATLAB函数是与硬件通信。

  • 检测运行时错误,比如周边冲突,在部署过程中更难诊断。

1。使用IO生活,你必须修改函数捕捉住图像使用网络摄像头连接到硬件。

函数edgeDetection() %创建连接的覆盆子πr = raspi硬件;
%的覆盆子π相机模块创建一个连接,捕捉住%图像,然后显示图像w =摄像头(r);
%定义卷积内核用于边缘检测kern = [1 2 1;0 0 0;1 2 1];%对捕获的图像的边缘检测算法运行的覆盆子π相机模块。k = 1:1000 img =快照(w);h = conv2 (img(:,: 2),克恩,“相同”);v = conv2 (img(:,: 2),克恩”、“相同”);e =√h。* h + v * v);edgeImg = uint8 (e > 100) * (240); imshow(edgeImg); end end

2。运行edgeDetection函数通过使用MATLAB命令窗口运行命令。当您运行这个函数,MATLAB连接到硬件和开始执行捕获的图像的边缘检测算法从网络摄像头连接到硬件。

运行edgeDetection

4所示。观察输出并调整边缘检测阈值根据相机和环境的特点,如果需要的话。

步骤3:将编译指令添加到MATLAB函数

添加% # codegen指令后(或编译指示)edgeDetection函数签名表示你打算部署硬件的功能。添加这个指令指示MATLAB代码分析器来帮助您诊断和解决在部署过程中违规行为,将导致错误。

函数edgeDetection () % # codegen

步骤4:边缘检测函数为部署做好准备

1。检查edgeDetection函数使用代码分析器步骤后的任何错误和警告检查使用代码分析器MATLAB函数并且在继续下一步之前修复它们。

在这个例子中,绿色指示指定的MATLAB函数没有错误或警告。

2。调试edgeDetection函数和替换所有不支持调用调用所支持的代码生成。万博1manbetx

在这个例子中,图像函数用于18行号不支持代码生成。万博1manbetx部署edgeDetection函数没有任何修改将导致一个可执行的可能并不是预期的那样。

解决这个不支持的函数调用错误万博1manbetx,更换图像支持的一个等价的调用代码生成。万博1manbetx你可以复制的功能图像通过使用displayImageMATLAB提供的函数支持包树莓π硬件。万博1manbetx

函数edgeDetection () % # codegen %创建连接的覆盆子πr = raspi硬件;
%的覆盆子π相机模块创建一个连接,捕捉住%图像,然后显示图像w =摄像头(r);
%定义卷积内核用于边缘检测kern = [1 2 1;0 0 0;1 2 1];%对捕获的图像的边缘检测算法运行的覆盆子π相机模块。k = 1:1000 img =快照(w);h = conv2 (img(:,: 2),克恩,“相同”);v = conv2 (img(:,: 2),克恩”、“相同”);e =√h。* h + v * v);edgeImg = uint8 (e > 100) * (240); displayImage(r,edgeImg,'Title','Edge Detection'); end end

第五步:创建一个硬件配置对象

1。创建一个使用硬件配置对象targetHardware函数在MATLAB命令窗口。

董事会= targetHardware(覆盆子π)
董事会=
targetHardware属性:
名称:“树莓π”DeviceAddress:“192.168.1.2”用户名:“π”密码:“* * * * * * * * *”BuildDir:“/ home /π”BuildAction:构建、加载和运行的

请注意:你可以部署的边缘检测算法MATLAB®在线™。看到连接到覆盆子π硬件板在MATLAB在线的步骤。

创建一个硬件配置对象

董事会= targetHardware(覆盆子π)
董事会=
targetHardware属性:
名称:“树莓π”DeviceAddress:“00000000 a9f2c18c”用户名:密码:“BuildDir:“/ home / matlabrpi”EnableRunOnBoot: 0 BuildAction:“建立、加载和运行”CoderConfig: [1 x1 coder.CodeConfig]

在MATLAB在线™DeviceAddressSerialNumber硬件的显示raspilist

2。验证DeviceAddress,用户名,密码属性中列出的输出。如果需要,改变属性的值通过使用点符号的语法。

例如,改变设备地址173.21.22.327,输入:

董事会。DeviceAddress = ' 173.21.22.327 '

第六步:硬件上部署MATLAB函数

部署的MATLAB函数作为一个独立的可执行硬件使用部署函数。

部署(板、“edgeDetection”)
代码生成成功:查看报告

部署函数初始化代码生成的edgeDetection函数。在代码生成,MATLAB生成代码生成报告。使用这个调试报告edgeDetection函数对任何在生成的代码建立错误和警告。

成功生成代码后,支持包加载并运行在硬件作为一个独立的可执行的代码。万博1manbetx可执行开始从摄像头获取生活图片,获得图像的边缘检测算法,然后在监视器上显示结果。

另请参阅