初识VisionPro应用开发

news2024/10/7 14:33:25

文章目录

  • 一、引言
  • 二、VisionPro应用开发指南
    • 1. 上手指南
      • 1.1. VisionPro开发概述
      • 1.2. 高级开发功能
    • 2. 选择应用开发路径(方式)
      • 2.1. 路径1:用QuickBuild和应用程序向导生成的操作接口进行交互式开发
      • 2.2. 路径2:用QuickBuild和自定义的应用程序向导操作接口进行交互式开发
      • 2.3. 路径3:交互式开发加自定义操作接口
      • 2.4. 路径4:使用原生VisionPro .NET编程接口的自定义应用程序
    • ⭐3. 创建一个视觉应用程序:QuickBuild
      • 3.1. 你要做什么
      • 3.2. 开始使用QuickBuild
      • 3.3. 建立图像源
        • 3.3.1. 打开图像数据库
        • 3.3.2. 运行作业
      • 3.4. 配置PMAlignTool
        • 3.4.1. 添加PatMax Align工具到作业
        • 3.4.2. 创建模式
        • 3.4.3. 试用经过训练的模式
        • 3.4.4. 调运行参数
        • 3.4.5. 运行整个作业
      • 3.5. 分析结果
        • 3.5.1. 将新终端暴露给PMAlign工具
        • 3.5.2. 向作业添加结果分析工具
        • 3.5.3. 配置结果分析工具
        • 3.5.4. 将新终端连接到结果分析工具
        • 3.5.5. 试用一下分析工具
        • 3.5.6. 变更作业
      • 3.6. 跟踪结果
        • 3.6.1. 配置程序以保存拒绝的结果
        • 3.6.2. 配置已发送项列表
        • 3.6.3. 运行程序并测试结果
    • 4. 使用应用程序向导来创建一个视觉应用
      • 4.1. 从QuickBuild应用程序创建可执行程序
      • 4.2. 在结果分析器中创建输入
      • 4.3. 打开应用程序向导

一、引言

项目用到图像识别,下个VisionPro先熟悉一下。


二、VisionPro应用开发指南

1. 上手指南

VisionPro可以快速构建功能强大且可随时部署的视觉应用程序。VisionPro还提供了功能齐全的工具包,可以使用微软的VS进行编程。

1.1. VisionPro开发概述

VisionPro提供了一个交互式的开发环境,你可以用它来组装工具、配置采集图像和离散的I/O,以及部署带有全功能操作界面的健壮且高性能的应用程序。

开发环境的关键组件如下:

  • QuickBuild(快速构建工具),它是一个交互式的应用程序构建器,该构建器允许你定义一个job(作业),该作业包含图像源、分析采集图像所需的图像处理和视觉工具,以及决定每个检查结果的结果分析逻辑。

    一个QuickBuild应用程序可以由多个生产环境的作业组成,在这些环境中可以多个摄像机同步或异步地拍摄要检查的对象图像。你可以以手动、按条件触发或自动操作的方式运行这些作业。

  • Communications Explorer(通讯管理器),提供了对康耐视离散I/O硬件的点击式浏览器访问。你可以将作业的特定数据项和结果集与单个输出行连接。你也可以配置系统级输出,例如作业就绪信号和系统心跳。

  • Application Wizard(应用程序向导),使用该组件,你可以快速生成一个完整的应用程序,包括操作界面,它封装了使用快速构建工具和通讯管理器创建的作业、采集和离散I/O配置。向导生成的应用程序包含一个可执行的Windows程序,完全注释的VB.NET或C#源代码以及作业和离散I/O配置数据。

下图概述了VisionPro开发:
在这里插入图片描述

所以VisionPro开发,先用快速构建工具将组件&图像串联起来,然后用应用程序向导打包。

1.2. 高级开发功能

除了使用应用程序向导来打包VisionPro应用程序进行部署外,还可以围绕配置的作业编写自定义程序,或者你可以使用C#或VB .NET直接使用底层VisionPro组件创建整个应用程序:

  • VisionPro Tools(VisionPro工具):VisionPro内的离散功能区域,例如摄像头的图像获取,封装在VisionPro工具中。每个VisionPro工具都使用低级别的VisionPro对象的不同组合来提供其特定功能,但同时每个VisionPro工具都提供了统一的工具接口(interface)。这种统一的接口使构建用于管理VisionPro工具集的高级环境成为可能。
  • VisionPro objects(VisionPro对象):这些构建块对象实现了VisionPro的基本功能:从相机、图像采集卡、文件或其他设备获取图像;在程序窗口显示图像;以及执行图像处理和图像分析。
  • User-Written Tools(用户编写的工具):你可以轻松编写自己的工具来实现定制功能,并将它和康耐视提供的工具一起包含在应用程序中。VisionPro公开了实现统一工具接口的所有信息。
  • Tool Edit Controls(工具编辑控件):所有VisionPro工具都配有相关的工具编辑控件。工具编辑控件提供了图形界面,允许用户查看和更改工具(以及底层对象)的所有属性。

2. 选择应用开发路径(方式)

VisionPro支持四种独立的开发方式,供你创建部署的VisionPro机器视觉应用程序:

  • 快速构建工具 + 向导生成的操作接口
    在这里插入图片描述

  • 快速构建工具 + 修改的操作接口
    在这里插入图片描述

  • 快速构建工具 + 自定义操作接口
    在这里插入图片描述

  • 自定义应用程序
    在这里插入图片描述

2.1. 路径1:用QuickBuild和应用程序向导生成的操作接口进行交互式开发

开发可部署VisionPro应用程序的最简单的方法是使用QuickBuild来交互式配置图像采集、图像处理和分析以及I/O,然后使用应用程序向导生成嵌入QuickBuild应用程序并可提供可配置操作接口的可部署VB.NET或C#程序。
在这里插入图片描述

优势:

  • 无需编程。
  • 快捷。
  • 能持续用QuickBuild来修改视觉图像、作业和I/O。

局限性:

  • 操作接口受应用程序向导的限制。

2.2. 路径2:用QuickBuild和自定义的应用程序向导操作接口进行交互式开发

因为应用程序向导生成了VB.NET或C#应用程序,且包含源码,所以你可以轻松地使用VS查看和修改生成的应用程序。这使得你可以轻松地定制应用程序外观,并添加其他系统组件的控件和显示值。
在这里插入图片描述
优势:

  • 轻松定制生成的应用程序
  • 仍可使用QuickBuild来修改底层的视觉应用程序

局限性:

  • 需要一定编程
  • 必须在向导生成的框架内工作
  • 无法重新运行向导来更新修改或向导生成的代码而不丢失你的修改

2.3. 路径3:交互式开发加自定义操作接口

VisionPro .NET编程接口包含了一些函数,这些函数可用于加载和操作保存的QuickBuild应用程序(实际上,向导生成的应用程序使用了这些函数)。你可以轻松编写自己的VS应用程序来加载和控制保存的QuickBuild应用程序,来代替使用向导生成的代码。
在这里插入图片描述
优势:

  • 完全自定义操作界面的外观和行为
  • 仍能使用QuickBuild来修改底层视觉应用程序

局限性:

  • 需要编程

2.4. 路径4:使用原生VisionPro .NET编程接口的自定义应用程序

VisionPro .NET编程接口使你可以直接控制图像采集、处理以及分析。
在这里插入图片描述
优势:

  • 整个程序都非常灵活

局限性:

  • 需要大量编程

⭐3. 创建一个视觉应用程序:QuickBuild

QuickBuild应用程序是VisionPro软件包的一部分,提供了一个交互式环境,可以快速创建一个视觉应用程序。本节介绍视觉工具的第一步,构建一个可执行的视觉应用程序。

3.1. 你要做什么

用VisionPro构建一个视觉应用有三步:

  1. 使用QuickBuild来开发和完善你的视觉应用程序。
    在这里插入图片描述
  2. 应用程序向导创建用户界面,并生成可执行应用程序。
  3. 测试并部署可执行程序。

3.2. 开始使用QuickBuild

VisionPro安装工具会在你Windows桌面上安装一个QuickBuild图标。
在这里插入图片描述
双击图标即可启动QuickBuildQuickBuild的初始窗口如下:
在这里插入图片描述

3.3. 建立图像源

开发视觉应用程序的第一步通常都是建立一个图像源,它可以是连接到康耐视帧捕获器的相机(一般是一些拍照、摄像的设备)。对于许多应用,可以从图像数据库开始(数据库中包含在生产环境中采集到的图像),然后修改应用程序以适应来自连接相机的图像,这非常方便。

前期不必直接连摄像机,可以从一些预先准备好的的图片开始,测试视觉程序。熟悉之后,可以把图片源改为相机。

3.3.1. 打开图像数据库

本例中,你将使用一个默认安装在 \Program Files\Cognex\VisionPro\Images\coins.idb中的硬币图像数据库(正确安装VisionPro后,安装目录下自带的)。

  1. 双击QuickBuild窗口中的 Image Source(图像源) 节点。
    在这里插入图片描述
    QuickBuild会打开一个QuickBuild作业编辑器对话框,你可以在里面添加和配置所需的视觉工具,以及一个 Image Source(图像源) 对话框:
    在这里插入图片描述
  2. 默认情况下,Image Source被配置为从图像数据库获取图像。
  3. 点击选择文件来选择一个图像数据库文件。
    本例中,选中 \Program Files\Cognex\VisionPro\Images目录下的 coins.idb
  4. 点击对话框左上角的实时显示按钮:
    在这里插入图片描述
    确认后会打开实时显示窗口,以循环浏览图像数据库文件中所有的硬币图像。
    在这里插入图片描述
  5. 关闭实时显示窗口和图像源对话框。

3.3.2. 运行作业

此时,作业仅包含配置图像源,但你可以运行作业以查看图像在QuickBuild作业编辑器中的显示方式。

  1. 点击工具栏中的运行按钮。

    ❗注意
    可能会出现下图所示无法运行的情况,这是因为你的VisionPro未激活(这边给个临时激活的教程链接,临时激活教程链接)。
    在这里插入图片描述

    正常运行后,效果如下:
    在这里插入图片描述

  2. 图像数据库文件中获取的图像会显示在显示区中。

  3. 当运行工具时,工具旁边的小绿点表示它成功运行。

  4. 当所有工具都成功运行时,作业编辑器左下角会出现一个绿点。

  5. 一直单击运行按钮,直到图像区域看到一个黑色圆圈。
    在这里插入图片描述
    下一步中,将添加一个PMAlign工具并配置它以查找每个图像中的硬币。

3.4. 配置PMAlignTool

本例使用 CogPMAlign(看起来像是Cognex Pattern Match Align的缩写) 工具在图像中查找圆形(硬币)。PMAlign工具使用康耐视PatMax软件来定位图像中的图案(本文不谈理论细节,只介绍工具使用,详细的理论知识请参阅PatMax软件理论相关资料)。

Pattern Match,[计]模式匹配。
当然Pattern也有图案的意思,所以在下文中理解成图像匹配也没有问题,即在模板图像中寻找匹配的目标物体。

3.4.1. 添加PatMax Align工具到作业

第一步就是添加一个CogPMAlign工具到QuickBuild项目中。

  1. 单击工具箱按钮。
    在这里插入图片描述

  2. 工具箱出现时,选中 CogPMAlignTool 并将其拖入作业编辑器中。

  3. 一个新的CogPMAlign工具就出现在了图像源的下方。
    在这里插入图片描述

  4. 图像源OutputImage(输出图像) 上单击,并将其拖入 CogPMAlign 工具的 (InputImage)输入图像,以链接由图像源生成的图像至需要 CogPMAlign 工具分析的输入图像上。
    在这里插入图片描述

3.4.2. 创建模式

PMAlign工具会在其要分析的每个图像中搜索/寻找经过训练的模式(trained pattern,即目标图案)。在配置PMAlign工具时,必须首先创建训练的模式,然后指定参数,例如要查找的模式数量(图像中存在的目标物体数量),每个潜在模式可能显示的预期维度范围(图像中可能存在的目标物体)以及其他搜索参数。该应用程序会使用一个硬币大小的圆点作为图案。如果你使用一枚硬币的真实图像,该工具也会尝试匹配这些特征。本例使用PatQuick算法,这是一个PMAlign工具选项,它用以提高工具的搜索速度,但会牺牲一定的准确性。在该应用场景中,搜索硬币并不需要很高的精度。

双击CogPMAlignTool1打开工具。

  1. 算法下拉菜单中选中PatQuick。使工具使用更快的PatQuick算法,该算法适用于本例。
    在这里插入图片描述

  2. 单击 抓取训练图像 ,使得工具以当前输入图像作为训练图像。

  3. 单击 训练区域&原点 选项卡来配置训练参数。

  4. 选项卡改变后,从显示菜单中选中 Current.TrainImage(当前训练图像) 以显示抓取的训练图像。

  5. 区域形状 下拉菜单中选择 CogRectangle 。这会告诉工具,你将选择一个简单的矩形区域进行训练。
    在这里插入图片描述

  6. 点击并拖动小的训练区域矩形以包围大的圆点,告诉工具使用图像的哪一部分作为模式。

  7. 点击中心原点按钮,将原点图标移动到矩形的中心。当工具在图像中找到特征时,它使用原点图标的相对位置来报告其位置。大多数情况下,寻找物体的中心就是你想要报道的位置。

  8. 点击训练参数选项卡以完成对模式的训练。
    在这里插入图片描述

  9. 勾选 忽略极性 选项。极性 会告诉工具,它应该考虑或忽略图案在亮背景上是暗的还是在暗背景上是亮的。由于该图案在浅色背景下是深色的,根据光线不同,硬币在背景下可能是深色或浅色。该情况下,忽略极性是正确的做法。

  10. 点击 训练 按钮。 经过训练的模式(图案)会出现在模式面板中, “已训练” 一词会显示在工具底部。
    在这里插入图片描述

你可能注意到了消息 模式包含的信息可能不足以测量 角度 可靠地 。因为你使用的图案是圆形的,因此PatMax软件无法确定它是否旋转。

3.4.3. 试用经过训练的模式

现在了解该模式工作的方式。

  1. 在图像下拉列表中选择 LastRun.InputImage 。最近一次运行图像的结果会在图像框中显示。由于你还没有运行该工具,因此该图像可能是空白的。
  2. 点击 运行 按钮。
    在这里插入图片描述
  3. 由于你使用的是当前图像作为训练模式(图案),所以工具应该会不出错并且很轻易地找到该模式。
  4. 点击 结果 选项卡查看工具生成的结果。
    在这里插入图片描述
  5. 结果窗格列出在图像中找到的所有特征。你可以检测每个特征的分数、位置和其他结果。
    当你选中结果窗格里的一行,相应形状在显示窗格中以蓝色突出显示。
    你可以使用该模式来查找图像中的任何圆形。但因为你想要找到的硬币可能有不同大小,所以你需要继续配置工具,使匹配模式更加灵活。
  6. 点击 运行参数 选项卡以调整工具的运行参数,使得工具可以处理不同大小的对象。
    在这里插入图片描述

3.4.4. 调运行参数

创建和训练模式是告诉PMAlign工具要寻找什么东西。而运行参数是告诉工具如何去发现它。

  1. 设置 Approx.number to find(查找概数) 至10。这个数字是工具的向导,而不是阈值。工具可能会找到超过该数量的实例。

    查找概数,字面意思也能体会出,就是图像中大概有几个目标模式。

  2. 点击 Scale(缩放) 箭头,将下限设为0.7,上限设为1.1。
    该设置允许你选择要查找的目标的相对大小。在本例中,使用的是期望的最大硬币来训练出来的模式。这套硬币中最小的是美国的一角硬币;它的直径大约是最大硬币的70%。
    比例因子也用于考虑尺寸和距离相机的微小差异。

在这里插入图片描述

现在用于找硬币的一切都已设置好:

  • 选择了用作模式的图像。
  • 训练了模式。
  • 设置了用于找到目标项的运行参数。

3.4.5. 运行整个作业

现在可以运行整个作业了。关闭 CogPMAlign 工具窗口,或者把它拖到一边,这样就可以看到 QuickBuild作业编辑器了。

  1. 点击 Run Job Once(单次运行作业) 按钮。
  2. QuickBuild会运行整个作业:
    • 从图像数据库或相机中获取下一个图像。
    • 运行 CogPMAlignTool 发现图像中的下一个目标项。
    • 将结果显示在显示窗格中。
  3. 可以点击 连续运行作业 ,使得QuickBuild获取图像并运行该工具,直到再次点击按钮。
    在这里插入图片描述
    在开发视觉应用程序时,你需要尝试处理可能的各种图像类型,并调节工具参数、相机对齐和照明等。如果需要为此应用程序执行该操作,双击QuickBuild作业编辑器中的 CogPMAlignTool1 项。

3.5. 分析结果

此时,应用程序已经完成了之前的任务:在图像中找到硬币。
现在,让它变得更有趣一点。
大多数视觉应用程序都需要检查图像,看它是否满足某些标准。在该程序中,你将检查图像中是否包含一定数量的硬币。

每个 VisionPro 工具都有一个结果状态(result status),该状态显示在工具编辑控件的左下角。在 QuickBuild作业编辑器 中,你可以在工具名称右侧的小图标中看到每个工具的状态。整个作业的结果状态取决于它用到的所有工具的结果状态。
在这里插入图片描述
理想情况下,PMAlign工具在找到所需的硬币数量时将判断通过,若数量未达标则认为失败。但PMAlign工具的实际用途远不止硬币计数。所以在使用前,最好先确定工具要生成哪些有用的信息。

为此,你需要暴露PMAlign工具生成的一些额外结果,并且使用一个新的工具,即叫作 结果分析器(Results Analysis tool) 工具来计算分析整个作业的检查状态。

这步就像代码中调用函数,取得函数的返回值那样。
判断函数的返回值是否符合要求。若符合要求,则通过;否则,失败。

3.5.1. 将新终端暴露给PMAlign工具

这边的终端可以理解为新的工具节点,将PMAlign的处理结果连接到新节点上,供它处理分析。
如果将工具看成一个函数,你也可以认为终端就是一个新的函数,将上一个工具的处理结果(函数返回值),当成下一个终端(函数)的输入参数传入。

默认情况下,PMAlign工具会暴露找到的第一个项的分数和姿势信息(pose information,姿势信息指的是找到的图案的大小和位置信息)。本例中你要暴露的数据是期望找到的硬币数量和实际发现的硬币数量。为此,你需要向PMAlign工具添加终端。

  1. 右键单击 QuickBuild作业编辑器窗口 中的 CogPMAlign 工具。

  2. 在弹出菜单中选中 Add Terminals(添加终端)
    在这里插入图片描述

  3. 此时成员浏览 对话框会被打开。
    在这里插入图片描述
    成员浏览器会暴露该工具的底层结构(类似代码的结构体或者类对象),这可能看起来有点复杂。于是为了降低复杂性,浏览器提供了三个层次结构; 典型(Typical)已展开(Expanded)所有(All) ,你可以从下拉菜单中进行选择。默认情况下, 典型 只显示最常用的元素。 已展开 会显示较长的列表, 所有 显示整个结构。

    自动展开 下拉框提供了自动展开常用属性集合的选项。当选择 公共成员 时,默认公共成员在显示时自动展开。若选择 ,则不会自动展开任何属性集合。本例中,使用 来尽可能的简洁显示。

    下表展示了浏览器显示的最常用的属性集合。这些属性集合在 .NET中作为类实现(就是这些属性分放在几个类中),大多数情况下它们对应于工具编辑控件中的选项卡。

    表1. VisionPro工具的部分

    属性集合(Class)描述
    Results该属性集合存储了工具生成的结果
    RunParams此属性集合包含了控制工具如何运行的参数

    接下来的一组步骤将带你完成暴露两个数据:期望找到的硬币数量和工具实际找到的硬币数。

  4. 点击以展开 Results 项。

  5. 选择 Count 项。

  6. 点击 Add Output(添加输出) 按钮。这会使 Results 属性成为 PMAlign 工具的输出终端。此时对话框不会关闭,所以你可以继续添加更多的终端。
    在这里插入图片描述

  7. 点击 RunParams 项以展开。滚轮滚到下面找到 ApproximateNumberToFind 项并点击。

  8. 点击 添加输出 按钮使 ApproximateNumberToFind 属性成为一个输出终端。你会发现此时的 添加输入 按钮是可点击的。这意味着你能使用该终端作为输入终端。

  9. 点击 关闭 按钮。
    在这里插入图片描述

  10. 新终端出现在了 QuickBuild作业编辑器 中。
    在这里插入图片描述
    接下来的任务是配置 结果分析工具 ,以接收刚刚添加的两个新输出终端的值。

3.5.2. 向作业添加结果分析工具

  1. 若VisionPro工具箱还没打开,点击菜单栏的 显示VisionPro工具 项按钮来打开工具箱。
  2. 选择工具箱中的 CogResultsAnalysis Tool(康耐视结果分析工具)
  3. 将它拖入 QuickBuild作业编辑器 中。
    在这里插入图片描述

3.5.3. 配置结果分析工具

  1. 双击 CogResultsAnalysisTool1 项,以打开 结果分析工具。

  2. 工具的编辑控件对话框打开后,点击 添加输入 按钮两次。
    两个分别叫做 InputAInputB 的新的项出现在列表中。
    在这里插入图片描述

  3. 点击列表中新项的名称,进行重命名。将它们的名字改的更符合实际的意义:NumberFoundMinimum
    在这里插入图片描述
    现在你需要一个表达式来比较这两个值。

  4. 点击 添加表达式 按钮。

  5. 一个新的表达式行出现在了列表中。
    将要构建的表达式是这样的:“拒绝任何NumberFound小于Minimum的结果”。
    在这里插入图片描述

  6. 要创建该表达式,先选择关系。单击表达式中的运算符单元格并选择 小于
    在这里插入图片描述
    选好后,参数 列会变红,并且 列会显示 ERROR。这是正常的,因为你还没有完善整个表达式。

  7. 参数0 列的单元格选成 NumberFound参数1 的单元格选为 Minimum 。这样,表达式就完成了。
    在这里插入图片描述

  8. 最后一步是设置拒绝(reject)的条件。当创建的表达式为True时,表示拒绝图像。在 Output(输出) 行中 设 参数1ExprC
    这就是说,当 Expr 为True时, 结果分析工具 会返回一个拒绝状态值;换句话说,此时发现的硬币数量小于最小值。
    在这里插入图片描述

3.5.4. 将新终端连接到结果分析工具

现在你需要为PMAlign工具创建的终端连接到 结果分析工具的输入。

  1. 点击 CogResultsAnalysisTool1 左侧的 + 图标,使你在工具中定义的两个输入暴露出来。
  2. 点击 PMAlign工具Results.Count 输出,将它拖到结果分析工具的 NumberFound 输入上。同样地,将 Results.ApproximateNumberToFind 拖到 Minimum 上。
    在这里插入图片描述

3.5.5. 试用一下分析工具

现在,可以看一下刚刚配置的这一切是如何工作的。将 QuickBuild作业编辑器窗口CogResultsAnalysisTool1 窗口分别拖开来,以便你可以同时看到这两个窗口。工具窗口总是在作业编辑器窗口的前面。

  1. 点击 单次运行作业 按钮来运行视觉程序。
  2. 当PMAlign工具运行时,找到的硬币数量和预期的硬币数量会被传输到结果分析工具上。
  3. 由于表达式 ExprC 为True,找到的硬币数量小于最小硬币数量,所以分析工具的状态为拒绝。
  4. 拒绝 状态会传给整个作业。 拒绝等级 的结果意味着作业中的所有工具都正确运行,但没有满足接受的标准。这种情况下,意味着PMAlign工具找到的硬币太少了。
    在这里插入图片描述

3.5.6. 变更作业

尝试改变PMAlign中的 Approx. no. to find(查找概数) 这项设置,看看它会如何影响作业运行。

  1. 双击作业编辑器中的 CogPMAlignTool1 项,以打开工具。
  2. 点击 PMAlign编辑控件中的 运行参数 选项卡。
  3. 查找概数 设为 3。
  4. 再次点击 QuickBuild作业编辑器 中的 单次运行 按钮。
  5. 现在看一下 结果分析工具 中的新的 Minimum 值。
    在这里插入图片描述
  6. 这次因为表达式的值为 False(找到的硬币数量比最小值大了),所以 结果分析工具 判定为通过。
  7. 通过 的结果也会传播带作业的其余部分。

下一节将展示如何跟踪应用程序的结果。保留历史结果有助于查看程序的运行情况,并且它还能使你的视觉应用程序更容易变成可部署的软件。

3.6. 跟踪结果

使用视觉软件时,经常会去看之前的运行结果。 QuickBuild 使用 Posted Item(已发送项/已发布项) 列表来保存每个作业已完成运行的结果。另一个列表 Failure Results Queue(失败结果队列) 用来保存失败的请求结果。
在这里插入图片描述

迄今为止,你一直在使用 QuickBuild作业编辑器 ,它允许你处理作业相关的事。本节中,你将使用包含整个应用程序的 QuickBuild主窗口(类似程序中的main函数)。本例中,应用程序只有一个作业,但在稍复杂的情况下,同一个程序中可能有多个作业。

3.6.1. 配置程序以保存拒绝的结果

默认情况下,QuickBuild被设置为记住最近32次作业执行和最近32作业失败(这个不一定,可能跟版本有关,教程中说是32,我的是8)。对于本程序,要求失败结果队列还包括那些作业正常运行但结果是拒绝的执行(即硬币数量不够)。

  1. 点击QuickBuild窗口工具栏中的 配置QuickBuild应用程序属性 按钮。
    如你所见, 已发送项 列表大小已经被设为32了。
  2. 勾选 失败队列 块中的 拒绝 选项。这表示失败队列将包含作业失败的和作业返回拒绝级别状态的结果。
  3. 点击 确定
    在这里插入图片描述
    下一步来指定你想要保存在已发送项列表中的结果。

3.6.2. 配置已发送项列表

  1. 点击 QuickBuild 窗口中的 配置已发送项 按钮。

  2. 若你的程序有超过一个作业,你将选择作业名称。

  3. 确保选中 包括LastRunRecord图像和图形 选项,以将图像和结果图形一起保存在结果中。

  4. 点击 Add Item/Add New Link(添加项) 按钮向 已发布列表 中添加项。此时, 配置已发送项 浏览窗口会被打开。
    在这里插入图片描述
    配置已发送项浏览器 会暴露以下复杂结构。为了降低复杂性,和结果分析器中的操作一样,对它进行分级:典型、展开和所有。你可以从下拉框中选择层次结构。

  5. 点击 + 图标,展开 Tools(工具) 项。
    你将看到作业中列出的三个工具: 图像源工具、 PMAlign工具和结果分析工具。

  6. 点击 CogResultsAnalysisTool1 项边上的 + 图标,以展开它。
    在这里插入图片描述

  7. 继续展开下面的项以找到结果分析器中 NumberFound 项的值:
    CogResultsAnalysisTool/RunParams/Item[“NumberFound”]/CogResultsAnalysisExpression/Value/Int32

  8. 点击 添加到已发送项 以将 NumberFound 值添加到已发送项列表。浏览窗口会保持打开状态,因此你可以添加更多其他项。
    在这里插入图片描述

  9. 展开项以找到结果分析器中 Minimum 项的值:
    Item[“Minimum”] / CogResultsAnalysisExpression / Value / Int32

  10. 点击 添加至已发送项 来将 Minimum 值添加到已发送项列表。

  11. 点击 关闭 关掉配置已发送项浏览器窗口。你可以选中列表中的项并点击它们的名称来对项进行重命名。
    在这里插入图片描述

3.6.3. 运行程序并测试结果

现在已经设置好已发送列表和失败结果队列了,你可以查看它们是如何工作的了。

  1. 在QuickBuild窗口中,点击 连续运行QuickBuild应用程序 按钮。
    这会开始程序运行。你将可以观察到作业名右侧的图标发生变化,会从绿点(成功状态)改变为绿点带红线(拒绝状态)。

  2. 几秒以后,点击 显示悬浮结果 按钮。

  3. QuickBuild结果 窗口被打开。数据字段会在作业运行时更新,但图像不会。
    在这里插入图片描述

  4. 再次点击 连续运行QuickBuild应用程序 按钮以停止程序。

  5. 滚动到数据字段的末尾,查看添加到已发布列表中的结果以及其值。

  6. 显示区域会显示图像结果。

  7. 然而,通常情况,你只对失败的图像感兴趣。你之前已启用将拒绝级别的结果添加到失败结果队列中的选项。单击失败结果队列,查看被拒绝的图像。
    在这里插入图片描述

  8. 可以用 QuickBuild结果 窗口顶部的按钮来检查其他已保存的结果。
    在这里插入图片描述

至此,你已具备了使用VisionPro和QuickBuild开发和完善视觉应用程序所需的基本技能。在开发阶段,你可能会测试不同图像集,改进模式,调整结果等等。

当你对QuickBuild程序进行更改时,需要保存它。
在这里插入图片描述
QuickBuild将应用程序保存为扩展名为.VPP的QuickBuild项目文件。

一旦准备好部署应用程序,就可以使用保存好的QuickBuild应用程序和 VisionPro应用程序向导 来创建可执行的Windows应用程序。

4. 使用应用程序向导来创建一个视觉应用

4.1. 从QuickBuild应用程序创建可执行程序

QuickBuild提供了一个非常灵活的环境来开发视觉应用程序,但是对于该程序的用户来说,它并不是一个方便的环境。VisionPro应用程序向导 会使用你在QuickBuild中创建的视觉程序,并创建带有更容易使用的定制界面的Windows应用程序。

使用 应用程序向导 可以对应用程序进行修改。你可以用它来对程序的底层进行修改,或者你可以暴露视觉工具的一些设置项。

4.2. 在结果分析器中创建输入

本例中,你将向 结果分析工具 添加一个新的输入终端,以便用户可以在运行程序时设置拒绝条件。

  1. 双击QuickBuild窗口中的 CogJob1 作业,以打开 作业编辑器 窗口。

  2. 双击 CogResultsAnalysisTool1 项以打开 结果分析工具

  3. 点击 添加输入 按钮,以创建一个你将在 应用程序向导 中使用的新输入终端。
    在这里插入图片描述

  4. 将新输入命名为 InputMinimum

  5. 参数1 改成 InputMinimum

  6. QuickBuild 窗口中保存程序。点击 QuickBuild应用程序另存为 项,将保存的程序命名为 coinsApp.vpp
    在这里插入图片描述
    现在可以准备使用 应用程序向导 了。

4.3. 打开应用程序向导

保存了使用QuickBuild构建的程序后,退出QuickBuild并打开VisionPro应用程序向导。应用程序向导的图标:
在这里插入图片描述
VisionPro应用程序向导会指导你完成每一步,通常需要你填写一个字段,然后单击 下一步 按钮。以下是打开后的画面。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/22899.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MySQL 经典面试题分析(值得收藏)

MySQL是程序员面试必问题目点之一,因为 MySQL 几乎占据了数据库的半壁江山。数据库的核心与原理基本是相通的,所以有了 MySQL 的基础之后,再去熟悉其他数据库也是非常快的,那么让我们一起来了解一下MySQL 。 MySQL 有很多存储引擎…

铁矿行业BI经营分析框架(二)万能框架-增长性、盈利性、流动性

有关铁矿行业的一些基础业务知识,铁矿行业的竞争本质上就是规模和成本的竞争。从业务角度探、采、选、冶这四块最重要的就是选矿这个过程。因为国内铁矿品位比较低,大部分都是30%左右的贫矿,所以选矿的成本就比较高。 要优化现金成本&#xf…

为什么推荐 Java 开发人员都学习并使用 Kotlin?

我使用 Java 已经有很长的时间了,工作中的使用有15年。如果算上在学校的时间的话,那就更长了。Java 的一个很大的优势是平台的开放性。这得益于 Java 字节代码和虚拟机的存在。由于 Java 语言自身的发展速度比较慢,就催生了很多运行在 JVM 上…

西班牙知名导演:电影产业应与NFT及社区做结合

潜力博主推荐,点击上面关注博主 ↑ ↑ “OGtown”是华语cryptopunks社区授权的文章专栏 NFT项目走向全球社区。 通证一哥:2016年起专注区块链行业相关的研究。中国大陆第一本NFT畅销书作者。加密朋克中文社区的联合发起人。token punk社区发起人 88pu…

【Linux】---环境变量

文章目录环境变量环境变量测试和环境变量相关的命令echoenvexportunsetset环境变量的组织方式main函数的几个参数第三个参数环境变量的全局性环境变量 环境变量一般是指在操作系统中用来指定操作系统运行环境的一些参数,例如: 平常我们去执行一个程序一…

Multiscale Vision Transformers 论文详解

Abstract 我们提出了 Multiscale Vision Transformers(MViT)用于视频和图像识别。MViT 是多尺度特征层次结构和Transformer的结合。MViT 有几个通道分辨率尺度块(channel-resoluation scale stages)。从输入分辨率和小通道维度开始…

JavaScript学习——什么是编程语言?计算机基础

每篇博文的浪漫主义 【Study Vlog #21 | 计划被打断之后的报复性学习 | 喜欢秋天安静的学习时刻】 https://www.bilibili.com/video/BV1b84y1B79c/?share_sourcecopy_web&vd_source385ba0043075be7c24c4aeb4aaa73352 Study Vlog #21 | 计划被打断之后的报复性学习 | 喜欢…

Android程序设计之学校疫情防控管理

基于Android实现的学校疫情防控管理,项目采用SQLite来存储数据。 SQLite 简介 SQLite是一个软件库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。SQLite是一个增长最快的数据库引擎,这是在普及方面的增长,…

测试工作的完整流程

需求评审:确保各部门需求理解一致。计划编写:根据重要核心程度来决定先测哪些功能后测哪些功能,测什么、谁来测、怎么测 a. 测什么:测哪些功能 b. 谁来测:具体的测试人员 c. 怎么测:具体测 功能、性能、兼容…

公众号免费搜题接口

公众号免费搜题接口 本平台优点: 多题库查题、独立后台、响应速度快、全网平台可查、功能最全! 1.想要给自己的公众号获得查题接口,只需要两步! 2.题库: 查题校园题库:查题校园题库后台(点击…

笔试强训(三十八)

目录一、选择题二、编程题2.1 蘑菇矩阵2.1.1 题目2.1.2 题解2.2 红与黑2.2.1 题目2.2.2 题解一、选择题 (1)下列关于URL的描述错误的是(A) A.http表名使用TCP协议 B.又名统一资源定位符,方便确定一个资源,…

邮件营销:怎么正确地收集邮件地址?

邮件营销提供了收件人和发件人双向沟通的平台,这对于企业来讲是一个很好的开发客户、和客户建立联系的方式。但是想要获得良好的营销效果,前提是我们需要拥有优质的联系人地址列表。怎么正确地收集邮件地址呢? 一般来讲,有三种邮…

2023年考PMP证书有什么意义?

每年都有一个关于 PMP 证书的意义的热门话题,PMP 证书必然是有意义的,不然怎么每年都有那么多人报考呢? 一、先给大家分析一下PMP 证书的使用场景 1、项目管理岗位招聘的门槛 PMP 是项目管理领域的一个权威公认证书,近几年受到的…

PROTAC——小分子化合物

PROTAC VS. 传统小分子 PROTAC 全称为 proteolysis-targeting chimeras (蛋白水解靶向嵌合分子),是一种杂合双功能小分子化合物,由三部分组成:靶蛋白配体、连接子 Linker、和 E3 连接酶配体,结构中两个配体之间通过 linker 相连&a…

Serverless 的前世今生

作者:阿里云用户组 从云计算到 Serverless 架构 大家好,我是阿里云 Serverless 产品经理刘宇,很高兴可以和大家一起探索 Serverless 架构的前世今生。 从云计算到云原生再到 Serverless 架构,技术飞速发展的轨迹都有一定规律可循…

Notch 信号通路的抑制剂、检测

近期,Cell 刊登了清华大学施一公课题组大作:Structural basis of γ-secretase inhibition and modulation by small molecule drugs,该文阐述了 γ-分泌酶结合三种小分子抑制剂 (GSI) 和一种调节剂 (GSM) 的冷冻电镜结构,并首次展…

Seata AT模式下的源码解析(一)

源码仓库:https://gitee.com/haijun1998/seata.git 分支source-read-1.5.0 1. GlobalTransactional GlobalTransactional 注解,提供给客户端来创建一个全局事务,GlobalTransactional 注解由 GlobalTransactionScanner 进行扫描,…

Java总结String类

String类专门用来表示字符串类型字符串构造的主要三种方法【学习一个类,先学习他的构造方法】 public class TestDemo1 {public static void main(String[] args) {String s1 "Hello";String s2 new String("Hello");char[] array {H,e,l,l…

[附源码]java毕业设计校园爱心支愿管理系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

[附源码]SSM计算机毕业设计高校奖学金评定管理系统JAVA

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…