部署和运行Sobel边缘检测与I / O NVIDIA杰森Nano
这个示例向您展示如何部署Sobel边缘检测,使用覆盆子π相机模块V2和显示在NVIDIA杰森Nano使用GPU硬件编码器™为NVIDIA®GPU支持包。金宝app在这个例子中Sobel边缘检测在NVIDIA杰森Nano使用覆盆子π相机模块V2,我们看到访问覆盆子π相机模块V2在NVIDIA杰森Nano使用GPU硬件编码器为NVIDIA GPU的支持包。金宝app在当前的例子中,我们将生成代码来访问I / O(相机和显示器)部署在NVIDIA杰森Nano的硬件。我们将考虑同一Sobel边缘算法表现出这种能力。
先决条件
目标板需求
英伟达杰森Nano嵌入式平台。
覆盆子π相机模块V2的CSI主机端口连接到目标。
以太网交叉电缆来连接目标板和主机PC(如果目标不能被连接到一个本地网络)。
V4L2和SDL (v1.2)库的目标。
GStreamer库目标。
环境变量的目标编译器和库。信息支持版本的编译器和库及其设置,明白了金宝app安装和设置先决条件NVIDIA董事会。
监视器连接到显示端口的目标。
开发主机需求
GPU编码器™代码生成。概述和教程,参观GPU编码器产品页面。
GPU编码器为NVI金宝appDIA GPU的支持包。如果你是新到这个支持包,我们建议完成金宝app开始使用GPU编码器为NVIDIA GPU的支持包金宝app的例子。
NVIDIA CUDA工具包在主机。
环境变量在主机的编译器和库。信息的支持版本的编译器和库,明白了金宝app第三方产品下载188bet金宝搏。设置环境变量,看到环境变量。
连接到NVIDIA杰森Nano
GPU编码器支持NVIDIA金宝app GPU包使用SSH连接在TCP / IP来构建和运行时执行命令生成的CUDA代码在杰森平台上。你必须将目标平台连接到同一网络主机或者使用以太网交叉电缆董事会直接连接到主机。请参阅NVIDIA文档如何设置和配置你的董事会。
与英伟达通信杰森Nano,您必须创建一个生活硬件连接对象使用杰森函数。你必须知道主机名或IP地址,用户名和密码的目标板创建一个生活硬件连接对象。例如,
hwobj =杰森(“jetson-nano-name”,ubuntu的,ubuntu的);
验证了GPU的环境
使用coder.checkGpuInstall功能和验证所需的编译器和库运行这个例子是正确设置。
envCfg = coder.gpuEnvConfig (“杰森”);envCfg。BasicCodegen = 1;envCfg。安静= 1;envCfg。HardwareObject = hwobj;coder.checkGpuInstall (envCfg);
Sobel边缘检测应用程序准备独立部署
包括相机和显示器接口Sobel边缘检测中的应用
hwobj =杰森;camObj =相机(hwobj,“vi-output imx219 6 - 0010”480年[640]);dispObj = imageDisplay (hwobj);
相关文件复制到当前目录
以下代码在当前工作目录中创建一个文件夹(主机),和所有相关文件复制到这个文件夹中。如果你不能生成文件在这个文件夹中,改变当前工作目录中运行此命令。
gpucoderdemo_setup (“sobel_edge_detection_deploy”);
Sobel边缘MATLAB应用程序代码生成
类型sobelEdgeDetection.m
函数sobelEdgeDetection () % # codegen % 2018 - 2020版权MathWorks, inc . hwobj =杰森;camObj =相机(hwobj vi-output imx219 6 - 0010, 480 [640]);dispObj = imageDisplay (hwobj);% Sobel内核kern = [1 2 1;0 0 0;1 2 1];%的主循环k = 1:1000 %从摄像机捕获图像硬件。img =快照(camObj);%发现水平和垂直梯度。h = conv2 (img(:,: 2),克恩,“相同”); v = conv2(img(:,:,2),kern','same'); % Finding magnitude of the gradients. e = sqrt(h.*h + v.*v); % Threshold the edges edgeImg = uint8((e > 100) * 240); % Display image. image(dispObj,edgeImg); end end
使用GPU编码器生成CUDA代码为目标
生成一个CUDA可执行,可以部署在一个NVIDIA的目标,创建一个GPU用于生成可执行代码的配置对象。
cfg = coder.gpuConfig (exe”);
使用coder.hardware杰森平台的功能来创建一个配置对象,并将其分配给硬件
代码配置对象的属性cfg
。
cfg。硬件= coder.hardware (英伟达杰森的);
使用BuildDir
属性指定的目录在目标系统上执行远程构建过程。如果指定的目标然后构建目录不存在软件创建一个目录的名字。如果没有指定值cfg.Hardware.BuildDir
,远程构建过程发生在最后一个指定的构建目录。如果没有存储构建目录值,构建过程发生在主目录。
cfg.Hardware.BuildDir=“~ / remoteBuildDir”;
设置GenerateExampleMain属性来生成一个例子c++主要功能并编译它。这个例子不需要修改生成的主要文件。
cfg。GenerateExampleMain =“GenerateCodeAndCompile”;
生成CUDA代码,使用codegen功能和配置以及通过GPU代码sobelEdgeDetection
入口点函数。代码生成发生在主机后,生成的文件复制,建立在目标。
codegen (“配置”cfg,“sobelEdgeDetection”,“报告”);
在目标系统上运行Sobel边缘检测
运行生成的可执行的目标,使用MATLAB®runApplication
函数。
设置适当的展示环境。
hwobj.setDisplayEnvironment (“1.0”);
运行该应用程序。
pid = runApplication (hwobj,“sobelEdgeDetection”);
在目标硬件显示窗口显示的Sobel边缘检测输出住相机饲料。
清理
删除并返回到原始文件夹的文件。
清理
总结
这个示例介绍了一个应用程序,Sobel边缘检测应用程序运行在NVIDIA杰森纳米住相机饲料和在本地显示输出显示。