文章目录
五、HDevelop过程
Procedure:
在HDevelop文档中(或者说在HALCON中),有一个单词 Procedure,我一直好奇应该将它翻译成程序还是过程。
其实现在回过头去看HALCON Quick_Guide(快速向导),里面有句话能一定程度上回答这个问题:
因为Program这个单词,用在计算机领域,翻译成编程或程序是没问题的,作名词时就是程序(不要杠)。所以结合"程序行包含了procedure"这句话和实际应用场景,不难发现Procedure翻译成过程好一些。
从"You can switch between the procedures(including the main procedure)"还能看出,下面列表框中的项就是过程,
学过上一章不难发现,程序窗口的代码,几乎没有底层实现,都是调用算子。既然是一个个算子的调用,调用算子这件事情是不是看成一个过程好一些呢?
而过程的内部就是程序代码,正如下面这句话所说,
所以个人认为还是过程好一些。
HDevelop为过程(procedure)的创建和执行提供了一种机制。过程旨在通过将多个算子调用封装在一个或多个过程调用中来增加HDevelop程序的可读性和模块化。通过将反复使用的功能存储在外部过程中,它使得能更容易地在其他HDevelop程序中重用程序代码。
调过程肯定比调函数、调库,甚至复制大段的代码方便。
而且过程这个东西更能反映整体逻辑(比如上节示例的先阈值化,再找连通区域)。
HDevelop过程由接口和程序体组成。过程接口类似于HALCON算子的接口,即,它们包含图像数据和控制数据的输入输出参数列表。过程体包含算子和过程调用列表。此外,HDevelop提供了大量支持,用结构化文档补充过程。这些文档自动集成在在线帮助系统中。
每个HDevelop程序都由一个或多个过程组成。一个程序总是包含主过程(程序窗口中的main),主过程在程序中具有特殊的地位,因为它在调用层次结构中,始终处于最顶层,且无法从程序中删除。
HDevelop为创建、加载、删除、拷贝、修改、保存和导出过程提供了必要的机制。一旦过程创建,基本上就能像用算子一样使用它:过程调用可以添加到任何程序体中,并使用合适的调用参数执行。一般来讲,在HDevelop中使用过程这个概念是对调用HALCON算子概念的延伸,因为过程和算子接口具有相同的参数类型,并且具有相同的传参规则。
5.1. 过程类型
HDevelop支持不同类型的过程。类型在过程创建时指定,并且要确定过程在(文件)系统中的位置。
- 本地过程(local procedure)
本地过程存储在HDevelop程序中。每个程序至少包含"main" procedure,即主过程。本地过程无法从其它程序或外部过程调用。 - 外部过程(external procedure)
外部过程存储为单独的文件,并能在不同的HDevelop程序之间共享。外部过程的修改会立即影响所有使用它的HDevelop程序。- 过程文件
每个过程文件都包含一个外部过程。文件名决定了过程名。因此,如果外部过程的文件名被更改了,使用它的程序和其他过程也得修改调用名。 - 库
库在单个文件中包含一组(通常是相关的)过程。它们与单个目录中的外部过程集合一样共享相同的属性。创建库的目的是把相关的过程看作一个整体单元。
- 过程文件
如果更改了已有过程的类型,可能会



4057



被折叠的 条评论
为什么被折叠?



