读取条形码
使用此工具可检测和读取图像中的一个或多个不同类型的条形码。如果添加该工具,会自动扫描当前的处理图像,并且默认情况下会读取图像上的所有条码。
训练
此工具在训练模式下使用。 easyTouch 和 easyTouch+ 可用于估算处理模式中当前图像的值。此工具可用于确定图像中的代码是否可以读取。随后,应使用训练模式通过一系列图像来确定最佳参数设置。
- 通过“运行一次”按钮或快捷键 F6 逐步运行应用程序,直到显示您要用作训练图像的图像。
- 单击
按钮或使用快捷键 F3,将当前图像添加到训练图像集。工具会自动高亮显示图像中代码可能存在的轮廓。
- 如有必要,在代码上绘制 ROI。
- 要添加其他训练图像,请再次重复前述步骤。
- 单击“应用训练数据”按钮执行训练。系统将自动确定一系列训练图像的参数。此外,工具还会自动切换为处理模式,并在当前图像中显示检测到的代码。
如果训练模式处于活动状态,则不会自动确定参数 “码型”。只有在使用 easyTouch 时,才会在处理模式下自动确定该参数。
应用训练时,只会更改一组特定的参数:
- 最小控件宽度
- 最大控件宽度
- 最小相对边缘幅度
- 最小绝对边缘幅度
- 方向
- 方向容差
相比之下,如果处理模式处于活动状态,则在使用 easyTouch 时只会自动更改以下参数:
- 码型
- 最小条形码宽度
- 最大控件宽度
- 最小绝对边缘幅度
所有其他参数的选定值将影响训练的结果。
检查训练
- 单击处理图像,切换到处理模式。
- 对一系列的图像运行 MERLIC,检查是否可检测并读取代码。
- 要检查特定代码的解码数据,将鼠标指针移到图像中的代码上。解码数据将立即显示在工具提示中。或者,您也可以在相应的工具结果中检查解码数据。
工具结构
工具面板 分为 左侧的训练区域和右侧的图形窗口。
训练区域
图形窗口
工具面板左侧的第一个图像显示当前加载的图像。在此阶段,MERLIC 提供了所有已找到代码的预览,并提供结果(如果使用默认参数设置读取成功)。
您需要通过单击 按钮将“处理”中显示的图像传输到“训练”区域,以选择训练图像。您还可添加另外一个图像。为此,请单步运行程序,直到您要用作训练图像的图像在“处理”中显示,然后按
按钮。在任何情况下,都请按下“应用训练数据”按钮来将参数应用于训练图像。
然后可以通过相同工具内的其他图像来测试参数。请参阅使用训练模式,进一步了解如何使用需要训练的工具。
参数
根据参数“码型”的选定码型,一些连接器会显示为灰色。这意味着它们不适用于当前选定的码型,因此不起作用。
基本参数
图像:
此参数表示从中读取条形码的图像。
如果在此工具中将彩色图像用作输入图像,仅第一个通道(即红色通道)将用于处理。
码型:
选择代码类型。默认情况下,会选择“自动”。单击应读取的代码,将相关参数设置为此代码类型。将代码类型设定为特定类型(如果可能)可带来更好的训练结果。
|
值 |
描述 |
|---|---|
|
自动 |
检测和读取所有代码类型。 |
|
2/5 Industrial 码 |
检测和读取“2/5 Industrial 码”型代码。 |
|
2/5 Interleaved 码 |
检测和读取“2/5 Interleaved 码”型代码。 |
|
|
检测和读取“”型代码。 |
|
Code 39 |
检测和读取“Code 39”型代码。 |
|
Code 93 |
检测和读取“Code 93”型代码。 |
|
Code 128 |
检测和读取“Code 128”型代码。 |
|
EAN-13 |
检测和读取“EAN-13”型代码。 |
|
EAN-13 Add-On 2 |
检测和读取“EAN-13 Add-On 2”型代码。 |
|
EAN-13 Add-On 5 |
检测和读取“EAN-13 Add-On 5”型代码。 |
|
EAN-8 |
检测和读取“EAN-8”型代码。 |
|
EAN-8 Add-On 2 |
检测和读取“EAN-8 Add-On 2”型代码。 |
|
EAN-8 Add-On 5 |
检测和读取“EAN-8 Add-On 5”型代码。 |
|
UPC-A |
检测和读取“UPC-A”型代码。 |
|
UPC-A Add-On 2 |
检测和读取“UPC-A Add-On 2”型代码。 |
|
UPC-A Add-On 5 |
检测和读取“UPC-A Add-On 5”型代码。 |
|
UPC-E |
检测和读取“UPC-E”型代码。 |
|
UPC-E Add-On 2 |
检测和读取“UPC-E Add-On 2”型代码。 |
|
UPC-E Add-On 5 |
检测和读取“UPC-E Add-On 5”型代码。 |
|
MSI |
检测和读取“MSI”型代码。 |
|
PharmaCode |
检测和读取“PharmaCode”型代码。 “PharmaCode” 可以从左到右或从右到左读取,这会导致不同的结果。如果不训练,仅使用 easyTouch,“已解码的数据” 将包含两个结果。训练模式确定了从左到右的读取方向,从而得出单个结果。 |
|
GS1 DataBar Omnidir |
检测和读取“GS1 DataBar Omnidir”型代码。 |
|
GS1 DataBar Truncated |
检测和读取“GS1 DataBar Truncated”型代码。 |
|
GS1 DataBar Stacked |
检测和读取“GS1 DataBar Stacked”型代码。 |
|
GS1 DataBar Stacked Omnidir |
检测和读取“GS1 DataBar Stacked Omnidir”型代码。 |
|
GS1 DataBar Limited |
检测和读取“GS1 DataBar Limited”型代码。 |
|
GS1 DataBar Expanded |
检测和读取“GS1 DataBar Expanded”型代码。 |
|
GS1 DataBar Expanded Stacked |
检测和读取“GS1 DataBar Expanded Stacked”型代码。 |
|
GS1-128 |
检测和读取“GS1-128”型代码。 |
最小控件宽度:
此参数定义条形码单元的最小尺寸,即代码条和间隔的最小宽度。它以像素为单位并默认设为 2 像素。对于低分辨率条形码,该值应降至 1.5 像素,在某些情况下甚至应降至 1.2 像素。对于大型条形码,应增大该值以缩短执行时间和减少候选对象。
如果训练未返回满意结果,该值可帮助在训练结束后手动更改 “最小控件宽度” 的值。
|
值 |
描述 |
|---|---|
|
2 |
这是默认的最小控件宽度。可读取最小控件宽度至少为 2 像素的所有符号。 |
|
1.2 - 10 |
这是可用于设定最小控件宽度的取值范围。 |
其他参数
处理区域:
此参数定义需要处理的区域。ROI 和“处理区域”并集之外的图像部分将不进行处理。此外,如果其中一个为空,将处理两者交集的图像部分。如果两者均为空,将处理整个图像。
默认情况下,“处理区域” 定义为空区域。要指定 “处理区域”,您需要将该参数连接至前一工具的适当区域结果,以确保某个区域会传输到此工具。
如果使用 easyTouch 确定参数值,则会使用整个图像进行搜索。
ROI:
“ROI” 参数定义需要检测代码的 感兴趣区域 (ROI)。“ROI” 和 “已处理的区域” 并集之外的图像部分将不进行处理。此外,如果其中一个为空,将处理两者交集的图像部分。如果两者均为空,将处理整个图像。 但是,如果使用 easyTouch 确定参数值,则会使用整个图像进行处理。
默认情况下,ROI 定义为空 ROI。如果想要使用非空的 ROI 进行处理,您必须将参数连接至前一工具的适当 ROI 结果,或者必须使用可用的 ROI 按钮在图像中绘制新的 ROI。
如果使用 easyTouch 确定参数值,则会使用整个图像进行搜索。
对齐数据:
此参数表示用于对齐 ROI 的对齐数据。默认情况下不会连接对齐数据,因此不显示任何效果。如果想要使用特定对齐数据,您必须将参数连接至前一工具的适当结果,例如通过匹配确定对齐、确定与直线边缘对齐、对齐图像或旋转图像。
预期代码数量:
此参数定义了图像中存在的预期最大代码数量。如果达到此数量,将不会花费更多执行时间进行更多候选区域搜索。默认情况下,此参数设置为(0)。这表示将返回所有候选条形码。但是,如果代码很难读取,使用此设置可能无法发现它们。一般而言,如果此参数设置数量小于图像代码的实际数量,那些很难读取的代码可能无法发现,因为返回这些代码将会延长执行时间。
如果不要求图像中的所有代码,此参数可用于缩短执行时间。这种情况下,指定预期数量将非常有用。如果指定了数量,MERLIC 可能仍然会返回比所选数量更多的代码,但仅在不增加执行时间的前提下。
超时:
通过使用此参数,可在以毫秒为单位确定的时间段之后中断工具的执行。在必须确保最大周期时间的情况下,此参数尤其有用。该中断的时间精度为 10 毫秒。此精度取决于多个因素,包括您的计算机的速度。在训练模式中会忽略超时。默认超时为 0 毫秒。
|
值 |
描述 |
|---|---|
|
0 |
默认情况下,未设置超时。 |
|
1 - 1000 |
可用于设定超时的取值范围(单位:毫秒)。 |
最小条形码高度:
此参数定义最小条形码高度。它以像素为单位并设为 0 像素,表示条形码阅读器自动从其他参数获得合理的高度。只需对极低和极高的条形码手动调整此参数。如果条形码的高度低于 16 像素,应由用户设置相应的高度。注意,最小值是 8 像素。如果条形码非常高(即 70 像素或更高),手动调整至适当的高度可以加速后续定位和读取操作。
|
值 |
描述 |
|---|---|
|
0 |
这是默认的最小条形码高度值。可读取所有符号。 |
|
0 - 64 |
这是可用于设定以像素为单位最小条形码的高度的取值范围。 |
最小条形码宽度:
此参数定义最小条形码宽度。它以像素为单位并默认设为 0 像素。条形码的宽度取决于多个因素:
- 相机的分辨率
- 相机和条形码之间的距离
- 条形码类型
- 编码字符的数量
如果这些属性在应用期间保持不变,则应设置此参数以提高速度和稳定性。默认值是 0 像素,表示阅读器根据码制规范和 “最小控件宽度” 参数估算最小条形码宽度。
|
值 |
描述 |
|---|---|
|
0 |
默认最小条形码宽度;可以读取所有代码。 |
|
0 - 100 |
可用于设定以像素为单位最小条形码宽度的取值范围像素。 |
校验字符:
此参数定义如何解读带可选校验字符的条形码。默认设置为“无”,但在处理带强制校验字符的条形码类型时,始终视为将此参数设置为“有”。
带可选校验字符的条形码:
- Code 39
- 2/5 Industrial 码
- 2/5 Interleaved 码
|
值 |
描述 |
|---|---|
|
无 |
工具假定没有校验字符。在此情况下,不执行校验,所有字符均作为数据返回。 |
|
保留 |
该值允许在验证条形码的同时保留数据中的校验字符。 |
|
有 |
如果选择此值,则预计会使用校验字符来验证条形码的正确性。如果校验和不匹配则不会返回条形码结果,且校验字符会从数据中剥离。 |
复合代码:
大多数 GS1 型条形码可以附加一个 2D GS1 复合代码组件。如果所搜索的条形码符号没有附加复合组件,则只返回条形码自身的结果。当前仅有 GS1 DataBar 型条形码可支持复合代码。默认设置为“无”。
|
值 |
描述 |
|---|---|
|
忽略 |
忽略复合代码组件。 |
|
CC-A/B |
如果选择该值,将会定位并解码复合组件。 |
最大控件宽度:
此参数表示条形码控件的最大尺寸,即代码条和间隔的最大宽度。它以像素为单位并默认设为 8 像素。该值应足够低,以防止相邻的两个条形码融合成一个。另一方面,该值应足够高,以便于定位完整的条形码区域。
|
值 |
描述 |
|---|---|
|
8 |
默认最大控件宽度;可以读取控件宽度在 8 像素以内的所有符号。 |
|
4 - 60 |
可用于设定最大控件宽度的取值范围。 |
控件宽度容差:
在某些条形码图像中,给定的条形码对象中最小的单元尺寸可能会不同。这些变形可能是由透视投影或条形码打印表面变形(例如,瓶上的桶形失真)引起。此参数默认设置为 0,因此条形码阅读器不能处理此类失真。
在某些情况下,无法校正条形码图像。
参数 “控件宽度容差” 仅适用于以下条形码类型:
- GS1 DataBar Limited
- GS1 DataBar Expanded
- GS1 DataBar Expanded Stacked
该参数不会影响任何其他条形码类型。
|
值 |
描述 |
|---|---|
|
0 |
工具将不处理失真。 |
|
1 |
工具将尝试补偿失真。 |
最小相对边缘幅度:
此参数定义了一个阈值,这是一个有关扫描线像素动态范围的相对值。条形码的代码条-间隔-序列采用测量边缘位置的扫描线确定。需要根据上述阈值来定位这些边缘。在条形码干扰或高杂音级别的情况下,应增大 “最小相对边缘幅度” 的值。
|
值 |
描述 |
|---|---|
|
0.05 |
这是默认的最小相对边缘幅度值。可读取相对边缘幅度至少为 0.05 的所有符号。 |
|
0.01 - 0.2 |
这是可用于设定最小相对边缘幅度的取值范围。 |
最小绝对边缘幅度:
如果扫描线所在的图像区域没有或仅有极小的灰度值动态范围(例如,在所有灰度值都接近 255 的白色区域),所计算出的基于 “最小相对边缘幅度” 的边缘检测阈值会小得超出合理范围。这通常会导致误检测出大量不合要求的边缘。“最小绝对边缘幅度” 用于防止此类误检测。如果基于 “最小相对边缘幅度” 的阈值小于 “最小绝对边缘幅度” 的值,将采用后者作为阈值。默认情况下,“最小绝对边缘幅度” 设置为 5。高杂音级别的图像更适合采用较大的值。另一方面,在对比度极低的无杂音图像中,此参数可能干扰真实边缘的检测,因此有必要降低此参数的值甚或通过将其设置为 0 以完全禁用。
|
值 |
描述 |
|---|---|
|
5 |
这是默认的最小绝对边缘幅度值。可读取绝对边缘幅度至少为 5 的所有符号。 |
|
0 - 10 |
这是可用于设定最小绝对边缘幅度的取值范围。 |
最小相同扫描线:
此参数表示成功解码并返回相同数据的扫描线的最小数量。这些扫描线用于决定条形码符号是否可以选取。如果此参数设置为 1,条形码视为采用已成功解码的第一扫描线解码。对于堆叠式代码而言,它必须是成功解码整行符号的扫描线。
将此参数增加至 2(也是默认值)或更高的数值尤其有用,因为这将减少误检条形码的风险。从质量不佳的图像或杂音级别很高的图像片段中提取错误边缘或不合要求的边缘时,会出现这种情况。在还包含其他条形码码制符号的图像中搜索特定条形码类型时,设置此参数也非常有用。
|
值 |
描述 |
|---|---|
|
2 |
这是默认的最小相同扫描线值。可读取至少有两个相同扫描线的所有符号。 |
|
1 - 8 |
这是可用于设定最小相同扫描线的取值范围。 |
方向:
此参数表示预期的条形码方向。它以度为单位并默认设为 0°。潜在的条形码包含方向相似的代码条。“方向” 和 “方向容差” 参数用于指定范围。此工具仅在条形码的代码条的平均方向位于此范围内时对其进行处理。如果预计在被处理图像中条形码仅以某些方向出现,则可以适当缩小方向范围。这有助于尽早发现错误的候选条形码,并因此缩短执行时间。此调整可用于带有大量结构的图像,这些结构中包含易于导致错误候选条形码的片段。
|
值 |
描述 |
|---|---|
|
0 |
这是条形码方向的默认值(以度为单位)。 |
|
-90 至 90 |
这是可用于设定条形码方向的取值范围。 |
方向容差:
此参数表示条形码的方向容差。它以度为单位并默认设为 90°。请参阅参数 “方向” 的解释了解更多信息。如此处的说明,相关方向值的取值范围仅为 -90° 到 90°,这表示当 “方向容差” 为 90° 时,可涵盖整个范围。因此,“方向容差” 的有效值的取值范围仅为 0° 至 90°。默认值 90° 表示未对候选条形码进行限制。
|
值 |
描述 |
|---|---|
|
90 |
这是以度为单位的条形码方向容差默认值(无限制)。 |
|
0 - 90 |
这是可用于设定条形码方向容差的取值范围。 |
静止区:
此参数对条形码符号静止区执行验证。启用时,如果在被检测条形码序列的右方或左方静止区内检测到意外代码条,则扫描线将被拒绝。当 “静止区” 设置为“未受到干扰”时,静止区必须至少达到相应条形码标准规定的宽度。默认设置为“噪声”。
适用以下值(采用 X 单位,其中 X 表示“模块宽度”,对应于序列中代码条的最小宽度):
|
条形码类型 |
左静止区 |
右静止区 |
|---|---|---|
|
2/5 Industrial 码 |
10 |
10 |
|
2/5 Interleaved 码 |
10 |
10 |
|
|
10 |
10 |
|
Code 39 |
10 |
10 |
|
Code 93 |
10 |
10 |
|
Code 128 |
10 |
10 |
|
EAN-13 |
11 |
7 |
|
EAN-13 Add-On 2 |
11 |
5 |
|
EAN-13 Add-On 5 |
11 |
5 |
|
EAN-8 |
7 |
7 |
|
EAN-8 Add-On 2 |
7 |
5 |
|
EAN-8 Add-On 5 |
7 |
5 |
|
UPC-A |
9 |
9 |
|
UPC-A Add-On 2 |
9 |
5 |
|
UPC-A Add-On 5 |
9 |
5 |
|
UPC-E |
9 |
7 |
|
UPC-E Add-On 2 |
9 |
5 |
|
UPC-E Add-On 5 |
9 |
5 |
|
MSI |
10 |
10 |
|
PharmaCode |
5 |
5 |
|
GS1 DataBar Omnidir |
1 |
1 |
|
GS1 DataBar Truncated |
1 |
1 |
|
GS1 DataBar Stacked |
1 |
1 |
|
GS1 DataBar Stacked Omnidir |
1 |
1 |
|
GS1 DataBar Limited |
1 |
1 |
|
GS1 DataBar Expanded |
1 |
1 |
|
GS1 DataBar Expanded Stacked |
1 |
1 |
|
GS1-128 |
10 |
10 |
在“自动”读取模式(“码型” 设置为 “自动”)下使用条形码阅读器时,静止区验证非常有用。它可防止在表示较长条形码的代码条序列中,或者在其他序列(通常是较复杂的条形码类型)中检测到简单的条形码类型。
|
值 |
描述 |
|---|---|
|
不可用 |
禁用静止区验证。 |
|
噪声 |
静止区中仅允许存在有限数量的边缘。 其目的是防止仅检测部分条形码,但同时仍然允许读取存在简单静止区违例的条形码。 |
|
未受到干扰 |
静止区必须至少达到相应条形码标准规定的宽度。 |
开始停止容差:
此参数将执行宽松 (1) 或严格 (0) 搜索标准,同时分别检查扫描线的开始或停止图案。如果被处理图像中描绘出成像清晰的符号,则采用较为宽松的标准将增大条形码的检出机会。另一方面,这可能导致在杂音图像或包含来自其他码制符号的图像中出现误检测。较为严格的标准会提高稳定性以减少误检测,但这可能降低整体检出率。当前,仅针对 Code 128 和 GS1‑128 执行两种不同的标准。
|
值 |
描述 |
|---|---|
|
1 |
这是开始停止容差默认值(容差)。 |
|
0 |
适用严格的搜索标准。 |
UPC E 编码:
对于 UPC-E 条形码,可以使用不同的输出格式。默认设置为 “UCC-12”。
|
值 |
描述 |
|---|---|
|
UCC-12 |
解码字符串将以 “UCC-12” 格式(包含 12 位数字)返回。 |
|
ISO/IEC 15420 |
结果将以不显示零的格式(在规定位置不显示零)返回。 此格式中的字符串以零开头,后面紧跟六位已编码数位和隐式编码的校验数位。这对应于 ISO/IEC 15420 标准中要求的格式。 |
结果
基本结果
已解码的数据:
此结果是带已解码的数据的字符串。如果读取多个代码,结果将以 tuple 形式返回。Tuple 条目根据其在图像中显示的“行”值和“列”值进行排序。因此,如果读取多行,第一行的已解码数据会首先返回,然后返回第二行的数据,以此类推。如果一行内有多个代码,则会从左至右返回数据,直到处理下一行,例如文本。
将鼠标指针移到图像中的代码上也会显示特定代码的解码数据。这样,您可以直接在图像中快速检查代码。
工具状态:
“工具状态”返回有关工具状态的信息,因此可用于处理错误。请参阅主题工具状态结果,了解关于不同工具状态结果的更多信息。
其他结果
已提取的轮廓:
此结果是检测到的条形码的轮廓。
处理时间:
此结果返回最近一次执行工具的持续时间(以毫秒为单位)。该结果作为附加结果提供。因此,默认情况下它是隐藏的,但是可以通过工具结果旁边的 按钮显示。有关更多信息,处理时间请参工具参考中所阅部分。
训练结果
基本训练结果
码型输出:
此结果返回用于以下参数的值: “码型"。它选择代码类型。
最小控件宽度输出:
此结果返回用于以下参数的值: “最小控件宽度"。它定义条形码控件的最小尺寸,即条形码和间隔的最小宽度。
其他训练结果
最小条形码宽度输出:
此结果返回用于以下参数的值: “最小条形码宽度"。它定义最小条形码宽度。
最大控件宽度输出:
此结果返回用于以下参数的值: “最大控件宽度"。它表示条形码控件的最大尺寸,即条形码和间隔的最大宽度。
最小相对边缘幅度输出:
此结果返回用于以下参数的值: “最小相对边缘幅度"。它定义了一个阈值,这是一个有关扫描线像素动态范围的相对值。
最小绝对边缘幅度输出:
此结果返回用于以下参数的值: “最小绝对边缘幅度"。它定义最小绝对边缘幅度。
方向输出:
此结果返回用于以下参数的值: “方向"。它表示预期的条形码方向。
方向容差输出:
此结果返回用于以下参数的值: “方向容差"。它表示条形码的方向容差。