6.2 控制参数

HALCON/C++ 可以为 HALCON 算子处理不同类型的控制参数:

控制参数的一种特殊形式是所谓的句柄,它可以访问更复杂的数据结构,如窗口、图像采集连接或基于形状匹配的模型。在内部,句柄由一种独特的控制数据类型表示。它们是不可更改的 "魔法" 值,在不同的执行过程和版本中可能会有所不同。一旦句柄的所有实例都被覆盖或清除,句柄及其内容将被销毁并失效。对于句柄,存在相应的类,具体描述请参见 "封装句柄的类" 一节

通过 HTuple 类,HALCON/C++ 为控制参数提供了一个容器类。HTuple 可以包含混合类型的控制参数数组。

6.2.1 元组

HTuple 类实现了一个动态长度的数组。默认构造函数会构造一个空数组(Length() == 0)。该数组可以通过赋值动态扩展。内存管理,即重新分配、释放,也由该类管理。访问数组的索引范围在 0Length() − 1 之间。

HTuple 类是线程安全的。HTuple 实例的副本可以在不同的线程中并发使用。

以下成员函数只反映了全部函数中的一小部分。更多信息请参阅 %HALCONROOT%\include\halconcpp 中的 HTuple.h 文件。

字符串编码

HTuple 类总是以接口编码存储原始字符指针字符串。这一点在通过 HTuple::SArr()HTupleElement::C() 方法访问内部原始指针时尤为重要。

在 Windows 下,可以使用宽字符串(wchar_t*,UTF-16)初始化 HTupleHTupleElement。该宽字符串会被转换为当前的接口编码(默认值:UTF-8)。如果接口编码不是 UTF-8,转换可能会涉及转码错误,即存储的字符串可能不包含输入宽字符串的所有字符。HTuple 类不允许以不同的编码或宽字符串访问字符串。

6.2.2 字符串

当需要转码或访问宽字符原始指针时,可以使用 HString 类。与 HTuple 类似,该类可以使用 wchar_t 指针字符串(仅限 Windows)或使用当前接口编码的原始字符指针字符串进行初始化。HString 允许通过 HString::FromUtf8(const char*)HString::FromLocal8bit(const char*) 创建特定编码的字符串。

此外,该类允许同时以 UTF-8、本地-8 位编码和宽字符串存储同一字符串。因此,只要不修改或销毁 HString 实例,就可以使用所需的原始指针。在所有表示法中,字符串仍然是字符串内存的所有者。

提供了以下访问原始指针的方法:

6.2.3 封装句柄的类

最著名的句柄类可能是 HWindow,将在 "窗口" 一节 进行介绍。HALCON/C++ 还提供了用于文件或功能(如访问图像采集设备、测量或基于形状的匹配)的句柄类。有关概述,请参见 "其他句柄类" 一节

6.2.3.1 窗口

HWindow 可以非常方便地管理 HALCON 窗口。可以轻松更改 HALCON 窗口的属性,显示图像、区域和多边形等。除了可以通过 HWindow 调用的算子外(另见 "通过类调用算子" 一节 ),HWindow 还提供了以下成员函数:

6.2.3.2 其他句柄类

HALCON/C++ 提供了所谓的句柄类,如 HFramegrabberHBarCodeHClassBoxMlp。这些类都基于 HHandle 类。

除默认构造函数外,类通常还会根据 "构造函数和 Halcon 算子" 一节 中描述的适当算子提供额外的构造函数;例如,类 HBarCode 就根据算子 CreateBarCodeModel 提供了一个构造函数。

参考手册为这些类提供了简短的概述页面,列出了可通过它们调用的算子。