本章包含用于读取二维数据码的算子。
二维数据码符号是一种特殊的二维图案,用于编码文本和数字。HALCON 能够读取最流行的二维数据码:数据矩阵 ECC 200(Data Matrix ECC 200)、二维码(QR Code)、微型二维码(Micro QR Code)、阿兹特克码(Aztec Code)、PDF417 和点阵码(DotCode)。除点阵码外,所有这些码都包含查找器图案和数据图案。查找器图案用于确定符号位置并获取基本几何属性信息(如符号方向)。数据图案包含实际编码内容,由多个圆点、条形或微型方块(即模块)构成。由于特殊设计,即使部分区域受损仍可实现解码。
以下简要描述了读取二维数据码所需的步骤。
首先,必须创建一个二维数据码模型,使用算子
该模型为阅读器提供了关于代码结构的所有必要信息。对于常规印刷代码,只需提供名称,HALCON 便会自动选择合适的默认参数。在特殊情况下,您可在创建二维数据码模型时或后续步骤中修改模型参数,以使模型适应特定符号的外观。
使用默认参数时,二维数据码阅读器能够识别多种编码格式。对于非标准编码,可以修改参数设置,使用算子
在此处,您可以通过通用参数 'default_parameters' 选择增强型默认参数集(例如取值
'enhanced_recognition'),或单独指定参数值以使模型最佳适配所用印刷样式的条件。请注意, 可用于查询特定数据码类型下有效的参数。若需获取当前参数设置值,可使用 query_data_code_2d_params。
get_data_code_2d_param
除了手动修改模型参数外,您还可以让 HALCON 通过
并使用通用参数 'train' 来训练模型。此时 HALCON 将自动搜索提取指定条码所需的最佳参数。建议对多张示例图像应用此方法,以确保涵盖所有变化情况。
定位二维数据码并解码其内容,使用算子
该算子对每个成功解码的符号返回包围该符号的 XLD 轮廓;指向结果结构的句柄,包含符号的附加信息以及搜索和解码过程的相关信息;符号中编码的字符串。通过结果句柄以及 和
get_data_code_2d_results 算子,可获取有关提取过程的附加数据,这些数据既可用于流程分析,也可用于显示。具体而言,get_data_code_2d_objects 可获取在符号搜索与读取过程中计算的多个字母数字结果,而 get_data_code_2d_results 则可获取上次调用
get_data_code_2d_objects 时创建的图标对象。find_data_code_2d
除上述算子外, 允许将模型写入文件,该文件可用于后续创建(例如在其他应用程序中)模型的完全副本。此类模型副本可直接通过
write_data_code_2d_model 创建(无需调用
read_data_code_2d_model)。此外,您可使用
create_data_code_2d_model 和
serialize_data_code_2d_model 分别对二维数据码模型进行序列化和反序列化操作。
deserialize_data_code_2d_model
二维图形符号,用于编码字符和数字。它由深浅不一的点、条或小方块构成,这些基本单元称为模块。二维数据编码存在多种类型,其中两种常见类型分别称为堆叠码和矩阵码。
一种二维数据码符号类型,包含按行和列排列的堆叠式一维条形码。为确保完整堆叠的一维条形码被处理,该符号包含起始和停止图案。此外,符号四周设有静区。
一种二维数据码符号类型,采用由明暗模块构成的二维排列图形图案。该符号包含三个组成部分:查找器图案、数据图案和静区。
用于构建二维数据码符号的深浅不一的圆点、条形或小方块。
符号边框周围的均匀边框,使符号更易于与背景或图像中的其他对象区分开来。
用于在图像中定位符号及其方向的图案。该图案因所用数据码类型而异。
另请参阅 “解决方案指南基础篇” 和 “二维数据码解决方案指南”,以获取有关二维数据码的更多详细信息。
clear_data_code_2d_model清除数据码二维模型create_data_code_2d_model创建数据码二维模型deserialize_data_code_2d_model反序列化数据码二维模型find_data_code_2d查找数据码二维get_data_code_2d_objects获取数据码二维对象get_data_code_2d_param获取数据码二维参数get_data_code_2d_results获取数据码二维结果query_data_code_2d_params查询数据码二维参数read_data_code_2d_model读取数据码二维模型serialize_data_code_2d_model序列化数据码二维模型set_data_code_2d_param设置数据码二维参数write_data_code_2d_model写入数据码二维模型