怎么用HALCON去开发应用程序
HALCON为应用开发提供了许多方法,但是为了充分利用架构,推荐如图1所示的模式。
图像监督,视觉方法原型设计及最后的开发都在HDevelop中执行,因此,整个程序由许多子程序组成,每一个代表代表一个诸如初始化,处理或者清除的子任务。主程序仅仅是作为一个通过传入图像和接受结果去调用子程序的测试环境。
一个完整的应用是在一个编程环境中开发的,如Microsoft Visual Studio。这有两种方法去集成HDevelop程序:要不你导出程序为你的编程语言,然后倒入它们,例如借助include声明。另外,你可以借助HDevEngine直接去执行HDevelop程序。用户接口和其他必要代码被所给语言的标准机制来执行;最后工程被编译和连接。
同HALCON库一起,被生成的应用程序代表了解决方案,能够被加载到目标机器上或被发送给客户。
图1 三步方法实现应用开发
三步方法有数个优势:
无论什么时候,视觉部分会很容易地被优化或宽展,因为对于图像数据的监督和调试工具,HDevelop比标准的编程环境要好的多。
如果你用HDevEngine,当你改变了HDevolop程序后,你不必要去重新编译和连接你的应用(前提是你不改变各个程序的签名)。如果你用的是导出代码的方式,你不需要去修改应用的其他部分,但需要重新编译和连接应用程序。
因为视觉部分是与一般的代码分离的,所以其可以以一种独立的方式被执行。另外,你不必要将整个工程发送给别人。对于技术支持问题,有一张或者多张图像的HDevelop程序可以快速的发送给经销商。
最后, 对于在其他架构上如Linux上的重新使用会很容易实现的,因为HDevelop在多操作系统上以相同的方式来运行。
需要注意的是,对于这两种方式(HDevEngine或者导出),应用仅仅包含HALCON的函数,诸如助手或者GUI元素等HDevelop有力的开发工具不能够被所使用的编程语言所访问的。
窥视HALCON底层:架构和数据结构
HALCON的架构,数据结构和内部的机制是根据哲学思想来开发的,具有:
(1)高效
(2)开放
(3)标准
(4)自由描述
高效意味着每一个HALCON算子的执行时间会尽可能的短。另外,操作算子已近被设计成一个标准序列,更复杂的任务的完成也会保持高效。
开放的架构在两方面:首先,你可以在许多不同的编程语言下使用HALCON,传递外部数据到HALCON和访问HALCON内部数据也是被支持的。最后,HALCON又透明的接口去集成用户定义的操作算子和非标准图像采集设备(不会改变HALCON的安装)。
标准化意味着操作算子和数据结构的签名,命名和使用都遵循严格规则,这就能够保证在较少错误的情况下,快速的学习。
最后,HALCON提供每个操作算子及其他们参数详细的信息,不仅仅在文档中,也可通过特定的算子在线查看。
图2 HALCON的基本架构
图2描述了HALCON的基本架构,主要部分是图像处理库,其由数量众多的算子构成,你可以以扩展包的形式来开发你自己的算子。你可以通过所谓的语言接口,如HALCON/C++来在你的应用中使用这些算子。这些库允许以不同编程语言特定的编程风格直接使用这些操作算子。HDevelop也会用编程语言的接口,但对用户这是透明的。
对于图像采集设备的访问,HALCON提供了所谓图像采集接口的公共接口。其允许以共同的方式来用完全不同的采集设备。包含特定设备执行的库当需要的时候会被动态的加载。
类似的,I/O设备通过特定设备I/O设备接口来访问,这些接口允许以共同的方式去访问不同的I/O设备,库也是当需要的时候被动态的加载的。
领取专属 10元无门槛券
私享最新 技术干货