数据码

算子列表 ↓

本章包含用于读取二维数据码的算子。

读取二维数据码的概念

二维数据码符号是一种特殊的二维图案,用于编码文本和数字。HALCON 能够读取最流行的二维数据码:数据矩阵 ECC 200(Data Matrix ECC 200)、二维码(QR Code)、微型二维码(Micro QR Code)、阿兹特克码(Aztec Code)、PDF417 和点阵码(DotCode)。除点阵码外,所有这些码都包含查找器图案和数据图案。查找器图案用于确定符号位置并获取基本几何属性信息(如符号方向)。数据图案包含实际编码内容,由多个圆点、条形或微型方块(即模块)构成。由于特殊设计,即使部分区域受损仍可实现解码。

读取 PDF417 类型的二维数据码。此图像来自示例程序 2d_data_codes_default_settings.hdev。

以下简要描述了读取二维数据码所需的步骤。

创建二维数据码模型:

首先,必须创建一个二维数据码模型,使用算子

该模型为阅读器提供了关于代码结构的所有必要信息。对于常规印刷代码,只需提供名称,HALCON 便会自动选择合适的默认参数。在特殊情况下,您可在创建二维数据码模型时或后续步骤中修改模型参数,以使模型适应特定符号的外观。

修改非标准代码的模型参数:

使用默认参数时,二维数据码阅读器能够识别多种编码格式。对于非标准编码,可以修改参数设置,使用算子

在此处,您可以通过通用参数 'default_parameters'"default_parameters""default_parameters""default_parameters""default_parameters""default_parameters" 选择增强型默认参数集(例如取值 'enhanced_recognition'"enhanced_recognition""enhanced_recognition""enhanced_recognition""enhanced_recognition""enhanced_recognition"),或单独指定参数值以使模型最佳适配所用印刷样式的条件。请注意,query_data_code_2d_paramsquery_data_code_2d_paramsQueryDataCode2dParamsQueryDataCode2dParamsQueryDataCode2dParamsquery_data_code_2d_params 可用于查询特定数据码类型下有效的参数。若需获取当前参数设置值,可使用 get_data_code_2d_paramget_data_code_2d_paramGetDataCode2dParamGetDataCode2dParamGetDataCode2dParamget_data_code_2d_param

除了手动修改模型参数外,您还可以让 HALCON 通过

并使用通用参数 'train'"train""train""train""train""train" 来训练模型。此时 HALCON 将自动搜索提取指定条码所需的最佳参数。建议对多张示例图像应用此方法,以确保涵盖所有变化情况。

读取二维数据码:

定位二维数据码并解码其内容,使用算子

该算子对每个成功解码的符号返回包围该符号的 XLD 轮廓;指向结果结构的句柄,包含符号的附加信息以及搜索和解码过程的相关信息;符号中编码的字符串。通过结果句柄以及 get_data_code_2d_resultsget_data_code_2d_resultsGetDataCode2dResultsGetDataCode2dResultsGetDataCode2dResultsget_data_code_2d_resultsget_data_code_2d_objectsget_data_code_2d_objectsGetDataCode2dObjectsGetDataCode2dObjectsGetDataCode2dObjectsget_data_code_2d_objects 算子,可获取有关提取过程的附加数据,这些数据既可用于流程分析,也可用于显示。具体而言,get_data_code_2d_resultsget_data_code_2d_resultsGetDataCode2dResultsGetDataCode2dResultsGetDataCode2dResultsget_data_code_2d_results 可获取在符号搜索与读取过程中计算的多个字母数字结果,而 get_data_code_2d_objectsget_data_code_2d_objectsGetDataCode2dObjectsGetDataCode2dObjectsGetDataCode2dObjectsget_data_code_2d_objects 则可获取上次调用 find_data_code_2dfind_data_code_2dFindDataCode2dFindDataCode2dFindDataCode2dfind_data_code_2d 时创建的图标对象。

其他算子

除上述算子外,write_data_code_2d_modelwrite_data_code_2d_modelWriteDataCode2dModelWriteDataCode2dModelWriteDataCode2dModelwrite_data_code_2d_model 允许将模型写入文件,该文件可用于后续创建(例如在其他应用程序中)模型的完全副本。此类模型副本可直接通过 read_data_code_2d_modelread_data_code_2d_modelReadDataCode2dModelReadDataCode2dModelReadDataCode2dModelread_data_code_2d_model 创建(无需调用 create_data_code_2d_modelcreate_data_code_2d_modelCreateDataCode2dModelCreateDataCode2dModelCreateDataCode2dModelcreate_data_code_2d_model)。此外,您可使用 serialize_data_code_2d_modelserialize_data_code_2d_modelSerializeDataCode2dModelSerializeDataCode2dModelSerializeDataCode2dModelserialize_data_code_2d_modeldeserialize_data_code_2d_modeldeserialize_data_code_2d_modelDeserializeDataCode2dModelDeserializeDataCode2dModelDeserializeDataCode2dModeldeserialize_data_code_2d_model 分别对二维数据码模型进行序列化和反序列化操作。

术语表

二维数据码符号

二维图形符号,用于编码字符和数字。它由深浅不一的点、条或小方块构成,这些基本单元称为模块。二维数据编码存在多种类型,其中两种常见类型分别称为堆叠码和矩阵码。

堆叠码

一种二维数据码符号类型,包含按行和列排列的堆叠式一维条形码。为确保完整堆叠的一维条形码被处理,该符号包含起始和停止图案。此外,符号四周设有静区。

矩阵码

一种二维数据码符号类型,采用由明暗模块构成的二维排列图形图案。该符号包含三个组成部分:查找器图案、数据图案和静区。

模块

用于构建二维数据码符号的深浅不一的圆点、条形或小方块。

静区

符号边框周围的均匀边框,使符号更易于与背景或图像中的其他对象区分开来。

查找器图案

用于在图像中定位符号及其方向的图案。该图案因所用数据码类型而异。

更多信息

另请参阅 “解决方案指南基础篇”“二维数据码解决方案指南”,以获取有关二维数据码的更多详细信息。


算子列表

clear_data_code_2d_modelClearDataCode2dModelclear_data_code_2d_modelClearDataCode2dModelclear_data_code_2d_model清除数据码二维模型
删除二维数据码模型并释放分配的内存。
create_data_code_2d_modelCreateDataCode2dModelcreate_data_code_2d_modelCreateDataCode2dModelcreate_data_code_2d_model创建数据码二维模型
创建二维数据码类的模型。
deserialize_data_code_2d_modelDeserializeDataCode2dModeldeserialize_data_code_2d_modelDeserializeDataCode2dModeldeserialize_data_code_2d_model反序列化数据码二维模型
反序列化一个序列化的二维数据码模型。
find_data_code_2dFindDataCode2dfind_data_code_2dFindDataCode2dfind_data_code_2d查找数据码二维
检测并读取图像中的二维数据码符号,或训练二维数据码模型。
get_data_code_2d_objectsGetDataCode2dObjectsget_data_code_2d_objectsGetDataCode2dObjectsget_data_code_2d_objects获取数据码二维对象
访问在搜索二维数据码符号期间创建的图标对象。
get_data_code_2d_paramGetDataCode2dParamget_data_code_2d_paramGetDataCode2dParamget_data_code_2d_param获取数据码二维参数
获取一个或多个描述二维数据码模型的参数。
get_data_code_2d_resultsGetDataCode2dResultsget_data_code_2d_resultsGetDataCode2dResultsget_data_code_2d_results获取数据码二维结果
获取在搜索二维数据码符号期间累积的字母数字结果。
query_data_code_2d_paramsQueryDataCode2dParamsquery_data_code_2d_paramsQueryDataCode2dParamsquery_data_code_2d_params查询数据码二维参数
为给定的二维数据码模型获取可用于其他二维数据码算子的通用参数或对象的名称。
read_data_code_2d_modelReadDataCode2dModelread_data_code_2d_modelReadDataCode2dModelread_data_code_2d_model读取数据码二维模型
从文件中读取二维数据码模型并创建新模型。
serialize_data_code_2d_modelSerializeDataCode2dModelserialize_data_code_2d_modelSerializeDataCode2dModelserialize_data_code_2d_model序列化数据码二维模型
序列化二维数据码模型。
set_data_code_2d_paramSetDataCode2dParamset_data_code_2d_paramSetDataCode2dParamset_data_code_2d_param设置数据码二维参数
设置二维数据码模型的选定参数。
write_data_code_2d_modelWriteDataCode2dModelwrite_data_code_2d_modelWriteDataCode2dModelwrite_data_code_2d_model写入数据码二维模型
将二维数据码模型写入文件。