基于Halcon学习的一维码识别【十六】gs1_128.hdev

GS1-128条形码符号;GS1-128条形码的符号结构与代码128符号相同;
这种条形码类型仅强制执行数据格式化的附加规则:数据组织在所谓的GS1应用程序元素中*符合GS1通用规范(www.GS1.org)的字符串;

在该程序中,GS1-128条形码被解码为128码和GS1-128码,并对解码结果进行比较。虽然符号仍然可以解码为代码128,但生成的字符串缺少数据的语义结构。相比之下,将符号解码为GS1-128将产生有效的GS1数据,并有效地分离应用元素strin


总代码:

* Constants used in the program
Scale := 1.0
ScaleInv := 1. / Scale
NumImages := 3
StatusHeight := 300
Colors := ['black','magenta','black','black','forest green',gen_tuple_const(10,'black')]
* 
* 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)
* 
* Create bar code reader
create_bar_code_model ([], [], BarCodeHandle)
* 
* Read bar codes
for I := 1 to NumImages by 1
    read_image (Image, 'barcode/gs1_128/gs1_128_generated_' + I$'.2d')
    * 
    find_bar_code (Image, SymbolRegions, BarCodeHandle, 'GS1-128', GS1128DecodedString)
    find_bar_code (Image, SymbolRegions, BarCodeHandle, 'Code 128', Code128DecodedString)
    * 
    * Visualize results
    Message := 'Code 128 Data:'
    Message := [Message,'   ' + Code128DecodedString]
    Message := [Message,' ']
    Message := [Message,'GS1-128 Data*:']
    Message := [Message,'   ' + GS1128DecodedString]
    Message := [Message,' ']
    Message := [Message,' ']
    Message := [Message,'*) The data is split in several GS1 element strings, ']
    Message := [Message,'   each containing an application identifier (AI, a']
    Message := [Message,'   number enclosed in brackets) and the element data']
    set_system ('flush_graphic', 'false')
    get_image_size (Image, Width, Height)
    dev_clear_window ()
    dev_set_window_extents (-1, -1, Scale * Width, Scale * Height + StatusHeight)
    dev_set_part (-12, 0, Height + ScaleInv * StatusHeight - 13, Width - 1)
    dev_display (Image)
    dev_display (SymbolRegions)
    disp_message (WindowHandle, 'Code 128 vs. GS1-128 data interpretation:', 'window', 12, 12, 'black', 'false')
    *设置HALCON系统参数,刷新参数
    set_system ('flush_graphic', 'true')
    disp_message (WindowHandle, Message, 'window', 12 + Scale * Height, 12, Colors, 'false')
    if (I < NumImages)
        disp_continue_message (WindowHandle, 'black', 'true')
        stop ()
    endif
endfor
* 
* Release memory allocated by the bar code reader
clear_bar_code_model (BarCodeHandle)

逐段分析:

*程序中使用的常量
Scale := 1.0
ScaleInv := 1. / Scale
NumImages := 3
StatusHeight := 300
Colors := ['black','magenta','black','black','forest green',gen_tuple_const(10,'black')]

*初始化
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)
*创建条形码阅读器
create_bar_code_model ([], [], BarCodeHandle)

*读条形码
for I := 1 to NumImages by 1
    read_image (Image, 'barcode/gs1_128/gs1_128_generated_' + I$'.2d')

    *寻找条形码,设置参数'GS1-128''Code 128'
    find_bar_code (Image, SymbolRegions, BarCodeHandle, 'GS1-128', GS1128DecodedString)
    find_bar_code (Image, SymbolRegions, BarCodeHandle, 'Code 128', Code128DecodedString)

*可视化结果
    Message := 'Code 128 Data:'
    Message := [Message,'   ' + Code128DecodedString]
    Message := [Message,' ']
    Message := [Message,'GS1-128 Data*:']
    Message := [Message,'   ' + GS1128DecodedString]
    Message := [Message,' ']
    Message := [Message,' ']
    Message := [Message,'*) The data is split in several GS1 element strings, ']
    Message := [Message,'   each containing an application identifier (AI, a']
    Message := [Message,'   number enclosed in brackets) and the element data']
    
    *设置HALCON系统参数
    set_system ('flush_graphic', 'false')
    get_image_size (Image, Width, Height)

    *清除窗口
    dev_clear_window ()
    dev_set_window_extents (-1, -1, Scale * Width, Scale * Height + StatusHeight)
    dev_set_part (-12, 0, Height + ScaleInv * StatusHeight - 13, Width - 1)
    dev_display (Image)
    dev_display (SymbolRegions)

    *显示信息
    disp_message (WindowHandle, 'Code 128 vs. GS1-128 data interpretation:', 'window', 12, 12, 'black', 'false')
    *设置HALCON系统参数,刷新参数
    set_system ('flush_graphic', 'true')
    
    *显示信息
    disp_message (WindowHandle, Message, 'window', 12 + Scale * Height, 12, Colors, 'false')
    if (I < NumImages)
        disp_continue_message (WindowHandle, 'black', 'true')
        stop ()
    endif
endfor
* 
* Release memory allocated by the bar code reader

*释放条形码阅读器分配的内存
clear_bar_code_model (BarCodeHandle)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值