不同数据码类型的解码结果

这段代码是一个用于比较不同类型数据码(如GS1 DataMatrix、QR Code和Aztec Code)的解码结果的脚本。它使用了一种Halcon语言。

ParameterSets := []
ParameterSets := [ParameterSets,‘GS1 DataMatrix’,‘Data Matrix ECC 200’,‘datacode/gs1datamatrix/gs1datamatrix_generated_’,‘standard_recognition’]
ParameterSets := [ParameterSets,‘GS1 QR Code’,‘QR Code’,‘datacode/gs1qrcode/gs1qrcode_generated_’,‘standard_recognition’]
ParameterSets := [ParameterSets,‘GS1 Aztec Code’,‘Aztec Code’,‘datacode/gs1aztec/gs1aztec_generated_’,‘enhanced_recognition’]
*

  • Constant variables
    StatusHeight := 300
    StatusWidth := 800
    Scale := 1.0
    ScaleInv := 1. / Scale
    Colors := [‘black’,‘magenta’,‘black’,‘black’,‘forest green’,gen_tuple_const(10,‘black’)]
    NumImages := 3
    NumParams := 4
    FNC1Separator := ‘\x1D’
  • Initialization
    dev_update_off ()
    dev_close_window ()
    dev_open_window (0, 0, 360, 256, ‘white’, WindowHandle)
    set_display_font (WindowHandle, 16, ‘mono’, ‘true’, ‘false’)
    dev_set_draw (‘margin’)
    dev_set_color (‘green’)
    dev_set_line_width (3)

for ParameterSetIndex := 0 to |ParameterSets| - NumParams by NumParams
GS1DataCodeType := ParameterSets[ParameterSetIndex]
GenDataCodeType := ParameterSets[ParameterSetIndex + 1]
ImageFilePrefix := ParameterSets[ParameterSetIndex + 2]
DefaultParameters := ParameterSets[ParameterSetIndex + 3]
*
* Create a GS1 and a non-GS1 data code reader to compare their results
create_data_code_2d_model (GS1DataCodeType, ‘default_parameters’, DefaultParameters, GS1DataCodeHandle)
create_data_code_2d_model (GenDataCodeType, ‘default_parameters’, DefaultParameters, GenDataCodeHandle)
for I := 1 to NumImages by 1
* Read a symbol image
read_image (Image, ImageFilePrefix + I$‘.2d’)
*
* Read the symbol both as a GS1 and as a non-GS1 symbol
find_data_code_2d (Image, SymbolXLDs, GenDataCodeHandle, [], [], ResultHandles, GenDecodedStrings)
find_data_code_2d (Image, SymbolXLDs, GS1DataCodeHandle, [], [], ResultHandles, GS1DecodedStrings)
*
* Escape the FNC1 character in the non-GS1 result to make
* it more apparent
tuple_split (GenDecodedStrings, FNC1Separator, Substrings)
if (|Substrings| > 1)
GenDecodedStrings := sum(Substrings[0:|Substrings| - 2] + ‘’) + Substrings[|Substrings| - 1]
endif
*
* Visualize results
get_image_size (Image, Width, Height)
set_system (‘flush_graphic’, ‘false’)
dev_set_window_extents (-1, -1, StatusWidth, Scale * Height + StatusHeight)
dev_set_part (-12, 0, Height + ScaleInv * StatusHeight - 13, ScaleInv * StatusWidth - 1)
dev_clear_window ()
dev_display (Image)
dev_display (SymbolXLDs)
Message := GenDataCodeType + ’ vs. ’ + GS1DataCodeType + ’ data interpretation’
disp_message (WindowHandle, Message, ‘window’, 12, 12, ‘black’, ‘false’)
Message := ‘’ + GenDataCodeType + ’ Data:’
Message := [Message,’ ’ + GenDecodedStrings]
Message := [Message,’ ‘]
Message := [Message,’’ + GS1DataCodeType + ’ Data*:‘]
Message := [Message,’ ’ + GS1DecodedStrings]
Message := [Message,’ ‘]
Message := [Message,’ ‘]
Message := [Message,’ *) The data is split into several GS1 element strings, ‘]
Message := [Message,’ each containing an application identifier (AI, a’]
Message := [Message,’ number enclosed in parentheses) and the element data’]
set_system (‘flush_graphic’, ‘true’)
disp_message (WindowHandle, Message, ‘window’, 12 + Scale * Height, 12, Colors, ‘false’)
if ((ParameterSetIndex < |ParameterSets| - NumParams) or (I < NumImages))
disp_continue_message (WindowHandle, ‘black’, ‘true’)
stop ()
endif
endfor
*
* Release memory allocated by the data code reader
clear_data_code_2d_model (GenDataCodeHandle)
clear_data_code_2d_model (GS1DataCodeHandle)
endfor
*
datamatrix:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
qrcode

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
aztec
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
以下是程序运行结果
datamatrix:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
QR code
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

aztec
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
以下是代码的主要功能和步骤的解释:

参数集定义:

ParameterSets 是一个数组,用于存储不同数据码类型的名称、生成类型、图像文件前缀和默认参数。
常量变量定义:

StatusHeight 和 StatusWidth 定义了状态栏的高度和宽度。
Scale 和 ScaleInv 用于图像缩放。
Colors 定义了用于显示不同信息的颜色。
NumImages 和 NumParams 定义了要处理的图像数量和参数集的数量。
FNC1Separator 定义了用于分隔非GS1结果中FNC1字符的分隔符。
初始化:

dev_update_off 和 dev_close_window 用于关闭设备更新和关闭窗口。
dev_open_window 打开一个新的窗口用于显示图像和结果。
set_display_font 设置显示字体。
dev_set_draw、dev_set_color 和 dev_set_line_width 设置绘图属性。
循环处理每个参数集:

循环遍历 ParameterSets,每次处理一个参数集。
对于每个参数集,创建两个数据码模型,一个用于GS1数据码类型,另一个用于通用数据码类型。
读取和解码图像:

循环读取每个图像文件,并使用两个数据码模型解码图像。
使用 find_data_code_2d 函数解码图像,并获取解码结果。
处理非GS1结果中的FNC1字符:

如果非GS1解码结果中包含FNC1字符,则将其替换为 ,以便更清晰地显示。
可视化结果:

使用 dev_display 显示图像和解码结果。
使用 disp_message 显示解码数据和相关信息。
循环结束条件:

如果还有更多的参数集或图像要处理,则显示继续消息并暂停。
释放资源:

在处理完每个参数集后,使用 clear_data_code_2d_model 释放数据码模型占用的内存。
这段代码的目的是比较不同数据码类型的解码结果,特别是在处理GS1标准数据码时,可能会有不同的解码策略和结果。通过可视化比较,用户可以直观地看到不同数据码类型和解码策略的影响。

  • 89
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Happy Monkey

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值