Chapter 5
Problem Handling
The previous section proposed a selection of preprocessing steps for common problems when working with 2D data codes. Now, we will go deeper into the handling of problems.
• In section 5.1 we introduce you to the debugging of the operator find_data_code_2d, which on the one hand helps to enhance the run time of successfully decoded symbols and on the other hand is used for locating problems with symbols that are not decoded. To identify a problem often leads to ideas how an undecoded symbol can be preprocessed.
• Some situations exist where a preprocessing yields no success. These situations and tips how to avoid them are presented in section 5.2.
• In section 5.3, the requirements and limitations for the 2D data code reader are summarized concisely.
前一节提出了处理2D数据代码时常见问题的预处理步骤选择。现在,我们将更深入地讨论问题的处理。
•在5.1节中,我们将向您介绍操作符find_data_code_2d的调试,这一方面有助于提高成功解码符号的运行时间,另一方面用于定位未解码符号的问题。识别问题通常会引出如何对解码后的符号进行预处理。
•存在一些预处理不成功的情况。5.2节会介绍这些情况以及如何避免它们的技巧。
•在第5.3节中,对2D数据代码阅读器的要求和限制进行了简要总结。
5.1 Data Access for Debugging
5.1 调试数据访问
在操作符find_data_code_2d的搜索过程中,除了解码的数据字符串和成功解码的符号的XLD轮廓之外,还可以得到各种结果。这些结果提供了一些提示,说明如何在运行时间方面增强搜索过程,或者为什么无法找到或者解码符号。HDevelop程序%HALCONEXAMPLES%\ HDevelop \Identification\Data-Code\2d_data_codes_data_access.hdev 显示如何基于各种原因访问结果。下面几节将详细描述该程序的各个步骤。特别介绍了:
•一般的数据访问,以及对所有调试目的有用的结果的选择(见5.1.1节),
•在面对解码成功但缓慢的符号时有用的结果选择(参见5.1.2节),
•选择的结果可能会提示为什么符号没有被解码(见5.1.3节)。
该程序集中在ECC 200。PDF417、QR码、Micro QR码、Aztec码和DotCode的一些与所给出结果不一致的特性将在第36页5.1.3节中介绍。
5.1.1 General Information About Data Access
5.1.1数据访问的基本信息
从操作符find_data_code_2d获得的结果分为图标结果和字母数字结果。图标结果,即像图像或区域这样的对象,可以使用操作符get_data_code_2d_objects进行查询,输入参数是DataCodeHandle,CandidateHandle和ObjectName。字母数字结果由操作符get_data_code_2d_results获得,输入参数是DataCodeHandle、CandidateHandle和ResultNames。图标和字母数字结果所需的候选句柄指定一个符号的单个候选句柄或一组候选句柄,为其查询结果或对象。在单个操作符调用中,您可以将一组候选与单个结果或单个候选与结果元组组合在一起。所有预定义的候选组以及每个SymbolType的所有可用对象和结果名称的列表可以在参考手册中各个操作符的描述处找到。
程序\hdevelop\Identification\Data-Code\2d_data_codes_data_access.hdev中,我们首先指定一般设置,即为' data Matrix ECC 200 '类型的符号创建一个2D数据编码模型,并将默认参数设置为增强模式,以便所有未损坏的符号都可以解码。默认情况下,一些结果仅临时存储在2D数据代码模型中。因此,我们将模型参数“persistence”设置为1,以将所有中间结果保存在内存中(参见第21页3.3.4节)。
可用的字母数字结果名称和图标对象名称的列表由操作符query_data_code_2d_params获得,参数为' get_result_params '和' get_result_objects '(另见第14页3.2.2节)。
读取图像后,应用操作符find_data_code_2d,该操作符存储所有中间结果,以便我们可以进一步研究它们。
对于一组字母数字结果,我们区分一般结果和与特定候选符号或一组候选符号相关的结果。一般结果被使用,例如,用于获得与每组候选人相关的候选人数量的信息。在程序中,我们将CandidateHandle设置为' general ',并传递一个包含所有可用的通用ResultNa