文章目录
一、引言
项目用到图像识别,下个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构建一个视觉应用有三步:
- 使用QuickBuild来开发和完善你的视觉应用程序。
- 用应用程序向导创建用户界面,并生成可执行应用程序。
- 测试并部署可执行程序。
3.2. 开始使用QuickBuild
VisionPro安装工具会在你Windows桌面上安装一个QuickBuild图标。
双击图标即可启动QuickBuild。QuickBuild的初始窗口如下:
3.3. 建立图像源
开发视觉应用程序的第一步通常都是建立一个图像源,它可以是连接到康耐视帧捕获器的相机(一般是一些拍照、摄像的设备)。对于许多应用,可以从图像数据库开始(数据库中包含在生产环境中采集到的图像),然后修改应用程序以适应来自连接相机的图像,这非常方便。
前期不必直接连摄像机,可以从一些预先准备好的的图片开始,测试视觉程序。熟悉之后,可以把图片源改为相机。
3.3.1. 打开图像数据库
本例中,你将使用一个默认安装在 \Program Files\Cognex\VisionPro\Images\coins.idb中的硬币图像数据库(正确安装VisionPro后,安装目录下自带的)。
- 双击QuickBuild窗口中的 Image Source(图像源) 节点。
QuickBuild会打开一个QuickBuild作业编辑器对话框,你可以在里面添加和配置所需的视觉工具,以及一个 Image Source(图像源) 对话框:
- 默认情况下,Image Source被配置为从图像数据库获取图像。
- 点击选择文件来选择一个图像数据库文件。
本例中,选中 \Program Files\Cognex\VisionPro\Images目录下的 coins.idb。 - 点击对话框左上角的实时显示按钮:
确认后会打开实时显示窗口,以循环浏览图像数据库文件中所有的硬币图像。
- 关闭实时显示窗口和图像源对话框。
3.3.2. 运行作业
此时,作业仅包含配置图像源,但你可以运行作业以查看图像在QuickBuild作业编辑器中的显示方式。
-
点击工具栏中的运行按钮。
❗注意
可能会出现下图所示无法运行的情况,这是因为你的VisionPro未激活(这边给个临时激活的教程链接,临时激活教程链接)。
正常运行后,效果如下:
-
图像数据库文件中获取的图像会显示在显示区中。
-
当运行工具时,工具旁边的小绿点表示它成功运行。
-
当所有工具都成功运行时,作业编辑器左下角会出现一个绿点。
-
一直单击运行按钮,直到图像区域看到一个黑色圆圈。
下一步中,将添加一个PMAlign工具并配置它以查找每个图像中的硬币。
3.4. 配置PMAlignTool
本例使用 CogPMAlign(看起来像是Cognex Pattern Match Align的缩写) 工具在图像中查找圆形(硬币)。PMAlign工具使用康耐视PatMax软件来定位图像中的图案(本文不谈理论细节,只介绍工具使用,详细的理论知识请参阅PatMax软件理论相关资料)。
Pattern Match,[计]模式匹配。
当然Pattern也有图案的意思,所以在下文中理解成图像匹配也没有问题,即在模板图像中寻找匹配的目标物体。
3.4.1. 添加PatMax Align工具到作业
第一步就是添加一个CogPMAlign工具到QuickBuild项目中。
-
单击工具箱按钮。
-
工具箱出现时,选中 CogPMAlignTool 并将其拖入作业编辑器中。
-
一个新的CogPMAlign工具就出现在了图像源的下方。
-
在 图像源 的 OutputImage(输出图像) 上单击,并将其拖入 CogPMAlign 工具的 (InputImage)输入图像,以链接由图像源生成的图像至需要 CogPMAlign 工具分析的输入图像上。
3.4.2. 创建模式
PMAlign工具会在其要分析的每个图像中搜索/寻找经过训练的模式(trained pattern,即目标图案)。在配置PMAlign工具时,必须首先创建训练的模式,然后指定参数,例如要查找的模式数量(图像中存在的目标物体数量),每个潜在模式可能显示的预期维度范围(图像中可能存在的目标物体)以及其他搜索参数。该应用程序会使用一个硬币大小的圆点作为图案。如果你使用一枚硬币的真实图像,该工具也会尝试匹配这些特征。本例使用PatQuick算法,这是一个PMAlign工具选项,它用以提高工具的搜索速度,但会牺牲一定的准确性。在该应用场景中,搜索硬币并不需要很高的精度。
双击CogPMAlignTool1打开工具。
-
在算法下拉菜单中选中PatQuick。使工具使用更快的PatQuick算法,该算法适用于本例。
-
单击 抓取训练图像 ,使得工具以当前输入图像作为训练图像。
-
单击 训练区域&原点 选项卡来配置训练参数。
-
选项卡改变后,从显示菜单中选中 Current.TrainImage(当前训练图像) 以显示抓取的训练图像。
-
从 区域形状 下拉菜单中选择 CogRectangle 。这会告诉工具,你将选择一个简单的矩形区域进行训练。
-
点击并拖动小的训练区域矩形以包围大的圆点,告诉工具使用图像的哪一部分作为模式。
-
点击中心原点按钮,将原点图标移动到矩形的中心。当工具在图像中找到特征时,它使用原点图标的相对位置来报告其位置。大多数情况下,寻找物体的中心就是你想要报道的位置。
-
点击训练参数选项卡以完成对模式的训练。
-
勾选 忽略极性 选项。极性 会告诉工具,它应该考虑或忽略图案在亮背景上是暗的还是在暗背景上是亮的。由于该图案在浅色背景下是深色的,根据光线不同,硬币在背景下可能是深色或浅色。该情况下,忽略极性是正确的做法。
-
点击 训练 按钮。 经过训练的模式(图案)会出现在模式面板中, “已训练” 一词会显示在工具底部。
你可能注意到了消息 模式包含的信息可能不足以测量 角度 可靠地 。因为你使用的图案是圆形的,因此PatMax软件无法确定它是否旋转。
3.4.3. 试用经过训练的模式
现在了解该模式工作的方式。
- 在图像下拉列表中选择 LastRun.InputImage 。最近一次运行图像的结果会在图像框中显示。由于你还没有运行该工具,因此该图像可能是空白的。
- 点击 运行 按钮。
- 由于你使用的是当前图像作为训练模式(图案),所以工具应该会不出错并且很轻易地找到该模式。
- 点击 结果 选项卡查看工具生成的结果。
- 结果窗格列出在图像中找到的所有特征。你可以检测每个特征的分数、位置和其他结果。
当你选中结果窗格里的一行,相应形状在显示窗格中以蓝色突出显示。
你可以使用该模式来查找图像中的任何圆形。但因为你想要找到的硬币可能有不同大小,所以你需要继续配置工具,使匹配模式更加灵活。 - 点击 运行参数 选项卡以调整工具的运行参数,使得工具可以处理不同大小的对象。
3.4.4. 调运行参数
创建和训练模式是告诉PMAlign工具要寻找什么东西。而运行参数是告诉工具如何去发现它。
-
设置 Approx.number to find(查找概数) 至10。这个数字是工具的向导,而不是阈值。工具可能会找到超过该数量的实例。
查找概数,字面意思也能体会出,就是图像中大概有几个目标模式。
-
点击 Scale(缩放) 箭头,将下限设为0.7,上限设为1.1。
该设置允许你选择要查找的目标的相对大小。在本例中,使用的是期望的最大硬币来训练出来的模式。这套硬币中最小的是美国的一角硬币;它的直径大约是最大硬币的70%。
比例因子也用于考虑尺寸和距离相机的微小差异。
现在用于找硬币的一切都已设置好:
- 选择了用作模式的图像。
- 训练了模式。
- 设置了用于找到目标项的运行参数。
3.4.5. 运行整个作业
现在可以运行整个作业了。关闭 CogPMAlign 工具窗口,或者把它拖到一边,这样就可以看到 QuickBuild作业编辑器了。
- 点击 Run Job Once(单次运行作业) 按钮。
- QuickBuild会运行整个作业:
- 从图像数据库或相机中获取下一个图像。
- 运行 CogPMAlignTool 发现图像中的下一个目标项。
- 将结果显示在显示窗格中。
- 可以点击 连续运行作业 ,使得QuickBuild获取图像并运行该工具,直到再次点击按钮。
在开发视觉应用程序时,你需要尝试处理可能的各种图像类型,并调节工具参数、相机对齐和照明等。如果需要为此应用程序执行该操作,双击QuickBuild作业编辑器中的 CogPMAlignTool1 项。
3.5. 分析结果
此时,应用程序已经完成了之前的任务:在图像中找到硬币。
现在,让它变得更有趣一点。
大多数视觉应用程序都需要检查图像,看它是否满足某些标准。在该程序中,你将检查图像中是否包含一定数量的硬币。
每个 VisionPro 工具都有一个结果状态(result status),该状态显示在工具编辑控件的左下角。在 QuickBuild作业编辑器 中,你可以在工具名称右侧的小图标中看到每个工具的状态。整个作业的结果状态取决于它用到的所有工具的结果状态。
理想情况下,PMAlign工具在找到所需的硬币数量时将判断通过,若数量未达标则认为失败。但PMAlign工具的实际用途远不止硬币计数。所以在使用前,最好先确定工具要生成哪些有用的信息。
为此,你需要暴露PMAlign工具生成的一些额外结果,并且使用一个新的工具,即叫作 结果分析器(Results Analysis tool) 工具来计算分析整个作业的检查状态。
这步就像代码中调用函数,取得函数的返回值那样。
判断函数的返回值是否符合要求。若符合要求,则通过;否则,失败。
3.5.1. 将新终端暴露给PMAlign工具
这边的终端可以理解为新的工具节点,将PMAlign的处理结果连接到新节点上,供它处理分析。
如果将工具看成一个函数,你也可以认为终端就是一个新的函数,将上一个工具的处理结果(函数返回值),当成下一个终端(函数)的输入参数传入。
默认情况下,PMAlign工具会暴露找到的第一个项的分数和姿势信息(pose information,姿势信息指的是找到的图案的大小和位置信息)。本例中你要暴露的数据是期望找到的硬币数量和实际发现的硬币数量。为此,你需要向PMAlign工具添加终端。
-
右键单击 QuickBuild作业编辑器窗口 中的 CogPMAlign 工具。
-
在弹出菜单中选中 Add Terminals(添加终端)。
-
此时成员浏览 对话框会被打开。
成员浏览器会暴露该工具的底层结构(类似代码的结构体或者类对象),这可能看起来有点复杂。于是为了降低复杂性,浏览器提供了三个层次结构; 典型(Typical) 、 已展开(Expanded) 和 所有(All) ,你可以从下拉菜单中进行选择。默认情况下, 典型 只显示最常用的元素。 已展开 会显示较长的列表, 所有 显示整个结构。自动展开 下拉框提供了自动展开常用属性集合的选项。当选择 公共成员 时,默认公共成员在显示时自动展开。若选择 无,则不会自动展开任何属性集合。本例中,使用 无 来尽可能的简洁显示。
下表展示了浏览器显示的最常用的属性集合。这些属性集合在 .NET中作为类实现(就是这些属性分放在几个类中),大多数情况下它们对应于工具编辑控件中的选项卡。
表1. VisionPro工具的部分
属性集合(Class) 描述 Results 该属性集合存储了工具生成的结果 RunParams 此属性集合包含了控制工具如何运行的参数 接下来的一组步骤将带你完成暴露两个数据:期望找到的硬币数量和工具实际找到的硬币数。
-
点击以展开 Results 项。
-
选择 Count 项。
-
点击 Add Output(添加输出) 按钮。这会使 Results 属性成为 PMAlign 工具的输出终端。此时对话框不会关闭,所以你可以继续添加更多的终端。
-
点击 RunParams 项以展开。滚轮滚到下面找到 ApproximateNumberToFind 项并点击。
-
点击 添加输出 按钮使 ApproximateNumberToFind 属性成为一个输出终端。你会发现此时的 添加输入 按钮是可点击的。这意味着你能使用该终端作为输入终端。
-
点击 关闭 按钮。
-
新终端出现在了 QuickBuild作业编辑器 中。
接下来的任务是配置 结果分析工具 ,以接收刚刚添加的两个新输出终端的值。
3.5.2. 向作业添加结果分析工具
- 若VisionPro工具箱还没打开,点击菜单栏的 显示VisionPro工具 项按钮来打开工具箱。
- 选择工具箱中的 CogResultsAnalysis Tool(康耐视结果分析工具)。
- 将它拖入 QuickBuild作业编辑器 中。
3.5.3. 配置结果分析工具
-
双击 CogResultsAnalysisTool1 项,以打开 结果分析工具。
-
工具的编辑控件对话框打开后,点击 添加输入 按钮两次。
两个分别叫做 InputA 和 InputB 的新的项出现在列表中。
-
点击列表中新项的名称,进行重命名。将它们的名字改的更符合实际的意义:NumberFound 和 Minimum。
现在你需要一个表达式来比较这两个值。 -
点击 添加表达式 按钮。
-
一个新的表达式行出现在了列表中。
将要构建的表达式是这样的:“拒绝任何NumberFound小于Minimum的结果”。
-
要创建该表达式,先选择关系。单击表达式中的运算符单元格并选择 小于。
选好后,参数 列会变红,并且 值 列会显示 ERROR。这是正常的,因为你还没有完善整个表达式。 -
将 参数0 列的单元格选成 NumberFound , 参数1 的单元格选为 Minimum 。这样,表达式就完成了。
-
最后一步是设置拒绝(reject)的条件。当创建的表达式为True时,表示拒绝图像。在 Output(输出) 行中 设 参数1 为 ExprC。
这就是说,当 Expr 为True时, 结果分析工具 会返回一个拒绝状态值;换句话说,此时发现的硬币数量小于最小值。
3.5.4. 将新终端连接到结果分析工具
现在你需要为PMAlign工具创建的终端连接到 结果分析工具的输入。
- 点击 CogResultsAnalysisTool1 左侧的 + 图标,使你在工具中定义的两个输入暴露出来。
- 点击 PMAlign工具 的 Results.Count 输出,将它拖到结果分析工具的 NumberFound 输入上。同样地,将 Results.ApproximateNumberToFind 拖到 Minimum 上。
3.5.5. 试用一下分析工具
现在,可以看一下刚刚配置的这一切是如何工作的。将 QuickBuild作业编辑器窗口 和 CogResultsAnalysisTool1 窗口分别拖开来,以便你可以同时看到这两个窗口。工具窗口总是在作业编辑器窗口的前面。
- 点击 单次运行作业 按钮来运行视觉程序。
- 当PMAlign工具运行时,找到的硬币数量和预期的硬币数量会被传输到结果分析工具上。
- 由于表达式 ExprC 为True,找到的硬币数量小于最小硬币数量,所以分析工具的状态为拒绝。
- 拒绝 状态会传给整个作业。 拒绝等级 的结果意味着作业中的所有工具都正确运行,但没有满足接受的标准。这种情况下,意味着PMAlign工具找到的硬币太少了。
3.5.6. 变更作业
尝试改变PMAlign中的 Approx. no. to find(查找概数) 这项设置,看看它会如何影响作业运行。
- 双击作业编辑器中的 CogPMAlignTool1 项,以打开工具。
- 点击 PMAlign编辑控件中的 运行参数 选项卡。
- 将 查找概数 设为 3。
- 再次点击 QuickBuild作业编辑器 中的 单次运行 按钮。
- 现在看一下 结果分析工具 中的新的 Minimum 值。
- 这次因为表达式的值为 False(找到的硬币数量比最小值大了),所以 结果分析工具 判定为通过。
- 通过 的结果也会传播带作业的其余部分。
下一节将展示如何跟踪应用程序的结果。保留历史结果有助于查看程序的运行情况,并且它还能使你的视觉应用程序更容易变成可部署的软件。
3.6. 跟踪结果
使用视觉软件时,经常会去看之前的运行结果。 QuickBuild 使用 Posted Item(已发送项/已发布项) 列表来保存每个作业已完成运行的结果。另一个列表 Failure Results Queue(失败结果队列) 用来保存失败的请求结果。
迄今为止,你一直在使用 QuickBuild作业编辑器 ,它允许你处理作业相关的事。本节中,你将使用包含整个应用程序的 QuickBuild主窗口(类似程序中的main函数)。本例中,应用程序只有一个作业,但在稍复杂的情况下,同一个程序中可能有多个作业。
3.6.1. 配置程序以保存拒绝的结果
默认情况下,QuickBuild被设置为记住最近32次作业执行和最近32作业失败(这个不一定,可能跟版本有关,教程中说是32,我的是8)。对于本程序,要求失败结果队列还包括那些作业正常运行但结果是拒绝的执行(即硬币数量不够)。
- 点击QuickBuild窗口工具栏中的 配置QuickBuild应用程序属性 按钮。
如你所见, 已发送项 列表大小已经被设为32了。 - 勾选 失败队列 块中的 拒绝 选项。这表示失败队列将包含作业失败的和作业返回拒绝级别状态的结果。
- 点击 确定。
下一步来指定你想要保存在已发送项列表中的结果。
3.6.2. 配置已发送项列表
-
点击 QuickBuild 窗口中的 配置已发送项 按钮。
-
若你的程序有超过一个作业,你将选择作业名称。
-
确保选中 包括LastRunRecord图像和图形 选项,以将图像和结果图形一起保存在结果中。
-
点击 Add Item/Add New Link(添加项) 按钮向 已发布列表 中添加项。此时, 配置已发送项 浏览窗口会被打开。
配置已发送项浏览器 会暴露以下复杂结构。为了降低复杂性,和结果分析器中的操作一样,对它进行分级:典型、展开和所有。你可以从下拉框中选择层次结构。 -
点击 + 图标,展开 Tools(工具) 项。
你将看到作业中列出的三个工具: 图像源工具、 PMAlign工具和结果分析工具。 -
点击 CogResultsAnalysisTool1 项边上的 + 图标,以展开它。
-
继续展开下面的项以找到结果分析器中 NumberFound 项的值:
CogResultsAnalysisTool/RunParams/Item[“NumberFound”]/CogResultsAnalysisExpression/Value/Int32 -
点击 添加到已发送项 以将 NumberFound 值添加到已发送项列表。浏览窗口会保持打开状态,因此你可以添加更多其他项。
-
展开项以找到结果分析器中 Minimum 项的值:
Item[“Minimum”] / CogResultsAnalysisExpression / Value / Int32 -
点击 添加至已发送项 来将 Minimum 值添加到已发送项列表。
-
点击 关闭 关掉配置已发送项浏览器窗口。你可以选中列表中的项并点击它们的名称来对项进行重命名。
3.6.3. 运行程序并测试结果
现在已经设置好已发送列表和失败结果队列了,你可以查看它们是如何工作的了。
-
在QuickBuild窗口中,点击 连续运行QuickBuild应用程序 按钮。
这会开始程序运行。你将可以观察到作业名右侧的图标发生变化,会从绿点(成功状态)改变为绿点带红线(拒绝状态)。 -
几秒以后,点击 显示悬浮结果 按钮。
-
QuickBuild结果 窗口被打开。数据字段会在作业运行时更新,但图像不会。
-
再次点击 连续运行QuickBuild应用程序 按钮以停止程序。
-
滚动到数据字段的末尾,查看添加到已发布列表中的结果以及其值。
-
显示区域会显示图像结果。
-
然而,通常情况,你只对失败的图像感兴趣。你之前已启用将拒绝级别的结果添加到失败结果队列中的选项。单击失败结果队列,查看被拒绝的图像。
-
可以用 QuickBuild结果 窗口顶部的按钮来检查其他已保存的结果。
至此,你已具备了使用VisionPro和QuickBuild开发和完善视觉应用程序所需的基本技能。在开发阶段,你可能会测试不同图像集,改进模式,调整结果等等。
当你对QuickBuild程序进行更改时,需要保存它。
QuickBuild将应用程序保存为扩展名为.VPP的QuickBuild项目文件。
一旦准备好部署应用程序,就可以使用保存好的QuickBuild应用程序和 VisionPro应用程序向导 来创建可执行的Windows应用程序。
4. 使用应用程序向导来创建一个视觉应用
4.1. 从QuickBuild应用程序创建可执行程序
QuickBuild提供了一个非常灵活的环境来开发视觉应用程序,但是对于该程序的用户来说,它并不是一个方便的环境。VisionPro应用程序向导 会使用你在QuickBuild中创建的视觉程序,并创建带有更容易使用的定制界面的Windows应用程序。
使用 应用程序向导 可以对应用程序进行修改。你可以用它来对程序的底层进行修改,或者你可以暴露视觉工具的一些设置项。
4.2. 在结果分析器中创建输入
本例中,你将向 结果分析工具 添加一个新的输入终端,以便用户可以在运行程序时设置拒绝条件。
-
双击QuickBuild窗口中的 CogJob1 作业,以打开 作业编辑器 窗口。
-
双击 CogResultsAnalysisTool1 项以打开 结果分析工具。
-
点击 添加输入 按钮,以创建一个你将在 应用程序向导 中使用的新输入终端。
-
将新输入命名为 InputMinimum。
-
将 参数1 改成 InputMinimum 。
-
在 QuickBuild 窗口中保存程序。点击 QuickBuild应用程序另存为 项,将保存的程序命名为 coinsApp.vpp 。
现在可以准备使用 应用程序向导 了。
4.3. 打开应用程序向导
保存了使用QuickBuild构建的程序后,退出QuickBuild并打开VisionPro应用程序向导。应用程序向导的图标:
VisionPro应用程序向导会指导你完成每一步,通常需要你填写一个字段,然后单击 下一步 按钮。下面是打开后的界面。
- 点击 下一步 进入下一个界面。
在该应用程序向导会话完成时,你可以选择保存一个配置文件(.vpw文件)。配置文件包含最初的.vpp文件,以及在运行向导时对其做的所有更改。下面界面向你提供了重新加载配置文件并将其作为向导会话起点的选项。这允许你在作业上重新运行应用程序向导,而不必重复以前的所有更改。
- 若你有想要使用的现有配置,单击 打开现有的配置 ;否则,点击 下一步 。
- 在 选择QuickBuild项目 界面中,输入你所保存的QuickBuild程序的路径,或者使用 浏览(…) 按钮来选中它。若在上一步中输入了一个配置文件,那这个路径将为您填充相关的QuickBuild项目文件(.vpp)的路径。点击 下一步 。
- 应用程序向导可能会花大约一分钟的时间来加载保存过的 QuickBuild程序。当保存的应用程序中的作业名称出现在大纲中的 配置选项卡 下时,说明加载完毕了。
- 点击 下一步 两次,以到达 应用程序名称 界面。
在该对话框中,你可以命名应用程序,或者接受默认名称。应用程序名称将成为由向导生成的.exe文件的名称。
点击 下一步。
- 若你希望对应用程序进行密码保护,就选中 启用密码支持 框。然后,你可以提供密码,或接受默认的 “Administrator”和“Supervisor”。
- 点击 下一步 按钮,直到到达 CogJob1 界面。现在来讲,将其他值设为默认值即可。
接下来,准备设计应用程序的UI了。
4.4. 创建UI
应用程序向导使用基于选项卡的界面生成应用程序。你可以根据需要添加任意数量的选项卡,每个选项卡都可以保存你希望用户查看或更改的数据。这是使用 应用程序向导 最困难的部分,但它非常类似于公开工具的终端或向已发布项列表添加项。
首先,你将提供一种方式来显示放置在已发布项列表中的两个项:找到的硬币数量和要从PMAlign工具中找的硬币的大致数量。
-
应用程序向导为你的作业设置一个选项卡。你也可以为选项卡修改名字。
-
点击 添加项 按钮,并选中下拉框中的 从已发布项添加输出 。
-
新项以 已发布项 0 的形式出现在列表中。一会儿将更改它的名称。
-
从 路径 下拉菜单中,选中 结果分析工具 的 NumberFound 项。
-
在标题字段修改,将此项命名为 NumberFound 。
-
点击 添加项 按钮,再次选中 从已发布项添加输出 。
-
这次选中 Minimum 。并将选项卡的标题命名为 ApproxNumberToFind 。
-
点击 添加项 按钮,这次选中 添加输入字段 。
-
新项命名为 属性0 。 点击 路径 右侧的 属性浏览(…) 按钮。
-
打开 选择输入属性 浏览窗口。浏览窗口会暴露复杂的底层结构。同样,为了降低复杂性,浏览器提供了三个结构层次:典型、扩展(已展开)和所有。默认情况下,典型只显示最常用的属性;扩展(已展开)显示较长列表;所有显示整个结构。选中下拉菜单中的 已展开 以公开本例所需的属性。打开 InputMinimum 项路径下面的项:
Tools / Item[“CogResultsAnalysisTool1”] / CogResultsAnalysisTool / RunParams / Item[“InputMinimum”] / CogResultsAnalysisInputExpression / Value
-
点击 确定 。
-
结果分析中的输入项没有关联的类型,因此会弹出一个对话框要求你选择它的类型。选中 Int32 并且点击 OK 。
-
将新属性命名为 NumberToFind 。你将注意到,与其他字段不同的是,该字段可用于输入。
-
点击 下一步 ,直到到达 输出目录 界面。
现在,你已经完成了应用程序向导中最困难的部分了。
4.4. 生成并运行应用程序
应用程序向导 的剩余步骤是让你选择生成的应用程序在硬盘上的位置,以及是否希望向导为您生成代码。
-
在 输出目录 界面上,您可以选择应用程序向导生成应用程序的目录。还可以输入名称,当然也能使用默认名称。
-
点击 下一步 。
-
应用程序向导可以为程序生成代码,以便你修改应用程序。通常不需要这么做,除非你想从根本上改变应用程序的外观或行为。现在,选择 无源代码 即可。
-
点击 下一步 ,直到到达 生成您的应用程序 界面。
-
现在几乎已经准备好运行生成的应用程序了。确保选中 运行生成的应用程序 复选框。
-
点击 完成 。
-
应用程序向导 会询问您是否保存配置。这会省去您在设置选项卡时所做的所有工作,所以大部分情况下,您应该选 是 。当您再次运行向导时,可以使用保存好的配置来节省大量工作。
将保存的配置命名为您可以记住的名称,如 coinsAppWizard 。 -
应用程序向导关闭,几秒后生成的应用程序就会出现。
5.使用生成的应用程序
5.1. 使用生成的应用程序
向导生成的应用程序为了便于用户操作而设计。同时,还可以使您更容易调整参数,不必每次都重新生成应用程序。本节中,你将学习如何运行生成的应用程序,以及如何对底层QuickBuild应用程序进行更改。
5.2. 设置
当您运行应用程序时,您可以选择在右下角的屏幕上显示一个logo,并包含一个文本消息,当操作员单击 关于… 按钮时。要添加一个logo,请在与应用程序的.exe文件相同的目录中添加一个包含位映射的logo并命名为“logo.bmp”的文件。要包含文本消息,请将文本包含在同一目录下命名为“about.txt”的文件中。
下面就是初始界面。
-
官方教程的示例创建时有一个登录需求。由于官方示例需要更改应用程序配置,因此需要在Administrator级别登录。在 当前登录 下拉框列表中选择“管理员”。
-
密码框会出现。输入密码并且点击 确定 。
配置 按钮会变成启用状态,并且不再是灰色。
-
点击 配置… 按钮。配置 对话框会出现。
点击 应用程序选型… 按钮。
该窗口显示的选项是在运行QuickBuild时为应用程序创建的默认选项。您可以在此处更改选项,并且更改是永久的。默认状态将启动程序为在线的。这将使您的I/O行在程序运行时处于活动/激活状态。在线或离线状态总是显示在屏幕顶部。 -
点击 确定 以继续。
5.3. 运行生成的应用程序
-
点击 单次运行 按钮运行您的程序。
-
每次点击单次运行,新的结果图像会出现在显示区域。
-
该项的值也会在 CogJob1 选项卡中更新。
-
每次的结果都会显示在作业历史记录中。绿色圆圈表示接受级别的结果;红色方块表示拒绝级别的结果。
因为 NumberToFind 字段的初始值是-1,所以您不会遇到任何失败。但是,你得知道的是,该字段连接到 结果分析工具 中的一个输入属性,该属性指要找到的最小硬币数量。 -
将 NumberToFind 改为3。
-
点击 单次运行 直到看到有图像的硬币数小于3。拒绝级别的结果会被添加到作业历史中。
-
点击 持续运行 按钮,观察应用程序是如何运行的。
5.4. 在QuickBuild应用程序中进行修改
当您的应用程序运行时,您可能会注意到PMAlign工具正在查找硬币的最少数量,而不是查找图像中的所有硬币(如下图)。
-
该问题是因为 ApproxNumberToFind(查找概数) 被设置为了3。
-
因此,当应用程序在寻找硬币时,有时会错过高于查找概数的硬币。这里的 查找概数 字段来自于已发布项列表,并反映了PMAlign工具中的 **Approx. no. to find(查找概数) ** 设置项。
-
如果你的程序仍然在运行,点击 停止 按钮。
-
点击 配置 按钮。
-
配置 对话框打开后,点击 QuickBuild 。
-
QuickBuild窗口会被打开在应用程序的前面。双击 CogJob1 以打开作业编辑器。
-
当作业编辑器出现时,双击 CogPMAlignTool1 以打开PMAlign工具编辑控件。
-
在PMAlign工具编辑控件中,点击 运行参数 选项卡。
-
将 查找概数 参数改为10。
-
关闭QuickBuild窗口。这将关掉PMAlign工具、作业编辑器以及QuickBuild。
-
QuickBuild会询问您是否要保存对底层QuickBuild程序所做的修改。点击 是 即可。
-
再次点击 单次运行 按钮。
-
对PMAlign工具中 查找概数 字段的更改会在此次运行的应用程序中生效。
-
记住,显示已发布项的字段会包含历史结果(如下图,此时ApproxNumberToFind已经改成10了,但是你查看历史记录时显示的ApproxNumberToFind还是旧值3)。若你点击作业历史记录中以前的结果,你看到的是 ApproxNumberToFind 旧的值。
5.5. 接下来干嘛
现在您已经学习了创建QuickBuild应用程序的基础知识。VisionPro和QuickBuild提供了非常丰富的开发环境。您可以继续深入学习其他内容。
- 学习QuickBuild相关。 使用QuickBuild。
- 学习如何在VB .NET或C#中使用脚本增强您的QuickBuild应用程序。在QuickBuild使用脚本。
- 了解有关应用程序向导的更多信息。使用VisionPro应用程序向导。
- 学习如何与外部设备通信。使用通信资源管理器。
🔺6. 从COM迁移至.NET
当您从基于COM的VisionPro(VisionPro 4.0或更早的版本)迁移至基于.NET的VIsionPro时,本主题包含的信息可能对您有用。从VisionPro 4.1开始,Cognex完全停止了对COM的支持,包括工具编辑控件、API和一些工具。
官方文档中这节主要介绍从老版本(基于COM)的VisionPro转到新版本(基于.NET)的注意事项,一些工具发生的变化。
由于现在都是基于.NET的VisionPro了,所以内容略过。
三、参考
- Cognex VisionPro文档
四、结语
VisionPro