barcode_quiet_zone

版权声明:本文为博主原创文章,转载请注明出处: https://blog.csdn.net/IntegralforLove/article/details/83722002

示例程序显示条形码受参数'quiet_zone'的影响。 该示例程序给出了如何为参数选择适当的值。

create_bar_code_model ([], [], BarCodeHandle)

set_bar_code_param (BarCodeHandle, 'persistence', 1)

PART I 读取条形码,无需空白区验证

QuietZone := 'false'

set_bar_code_param (BarCodeHandle, 'quiet_zone', QuietZone)

* 将meas_thresh设置得非常低,以强制进行错误读取

set_bar_code_param (BarCodeHandle, 'meas_thresh', 0.03)

* 自动识别条码类型,并且返回目标条码区域与解码字符串。

find_bar_code (Image, SymbolRegions, BarCodeHandle, 'auto', DecodedData)

* 默认情况下,‘quiet_zone’设置为‘false’。

* 在这种情况下,不验证条形码候选周围的空白区是否干净。结果,在另一个标签内可以检测到错误的条形码。在这里,标签 '2/5 Interleaved' 被错误识别为 'Codabar' 码。

* 显示条码的空白区

gen_quiet_zone_region (CodabarRegion, CodabarRegion, CodabarQZones, DecodedTypes[1], 10)

* 条形码标签标准规定了每个印刷标签的两侧的空白区。这里,检测到的'Codabar'条码的空白区不可用。这表明序列可能无效。通过强制验证空白区,可以抑制条形码被错误的检测。

* 空白区的大小在描述不同条码标签的标准中指定。

* 对于大多数条码类型, 需要大小为 10 * X 的空白区, 这也是 'Codabar' 的情况。X 表示条形序列中最窄条形的宽度。

PART II 使能条码空白区验证

QuietZone := 'true'

set_bar_code_param (BarCodeHandle, 'quiet_zone', QuietZone)

set_bar_code_param (BarCodeHandle, 'meas_thresh', 0.25)

* 已启用空白区验证。这将强制条码读取器拒绝在标签中检测到'Codabar'序列。然后, 读取器尝试使用其他条码类型, 直到最终检测到该标签的正确类型: 2/5 Interleavedsdf

* 显示绘制目标区域的空白区

* '2/5 Interleaved' 条码已成功解码, 因为在其任何空白区中没有检测到条形图 (即使有一个单独的边缘)。不幸的是, 现在'Code 39'不能被解码了, 因为在它的一个安静区域中检测到一个柱线。要解决此问题, 用户可以自定义空白区的大小。

* 存在一个干扰空白区的条码(Code 39)

* 仅检测到边缘对中可容忍的单个边缘(2/5 Interleaved)

PART III 启用 tolerant 空白区验证

* 启用符合标准的空白区, 但允许轻微干扰

 * 空白区验证设置为'tolerant'。这样, 两个条码都被检测到, 尽管存在小的干扰。

QuietZone := 'tolerant'

set_bar_code_param (BarCodeHandle, 'quiet_zone', QuietZone)

PART IV 使用用户定义的空白区大小进行空白区验证

* 选择一个用户自定义的空白区可以调整空白区的验证行为:

* - 抑制错误检测

* - 容忍标签附近的干扰

* 通常在2和5之间的值会适用于两个目标。

QuietZone := 4

set_bar_code_param (BarCodeHandle, 'quiet_zone', QuietZone)

猜你喜欢

转载自blog.csdn.net/IntegralforLove/article/details/83722002