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

这个程序演示了GS1数据库条形码的复合元件解码


总代码:

*关闭窗口
dev_close_window ()
dev_open_window (0, 0, 512, 512, 'black', WindowHandle)
set_display_font (WindowHandle, 14, 'mono', 'true', 'false')
* 
ScaleWindow := 1.0
* 
dev_set_draw ('margin')
dev_set_color ('green')
dev_set_line_width (3)
* 
*
*创建模板
create_bar_code_model ([], [], BarCodeHandle)
set_bar_code_param (BarCodeHandle, 'composite_code', 'CC-A/B')
* 
*设置最小的像素值为1.5
set_bar_code_param (BarCodeHandle, 'element_size_min', 1.5)
* 
TestParams := []
TestParams := [TestParams,'gs1databar_stacked_composite_01','GS1 DataBar Stacked']
TestParams := [TestParams,'gs1databar_limited_composite_01','GS1 DataBar Limited']
TestParams := [TestParams,'gs1databar_limited_composite_02','GS1 DataBar Limited']
TestParams := [TestParams,'gs1databar_expanded_composite_01','GS1 DataBar Expanded']
* 
* 
for I := 0 to |TestParams| - 2 by 2
    File := 'barcode/gs1databar_composite/' + TestParams[I]
    CodeType := TestParams[I + 1]
    * 读取图片
    read_image (Image, File)
    * Compensate for over exposed images: expand dark areas
    *补偿过度曝光的图像:扩大黑暗区域
    *确定选定遮罩内的最小灰度值
    gray_erosion_shape (Image, Image, 1.5, 1.5, 'octagon')
    get_image_size (Image, Width, Height)
    
    *设置窗口与图像相适应
    dev_set_window_extents (0, 0, ScaleWindow * Width, ScaleWindow * Height)
    *显示信息【'条形码类型:'+代码类型】
    disp_message (WindowHandle, 'Barcode Type: ' + CodeType, 'window', 12, 12, 'black', 'true')
    * 
    find_bar_code (Image, SymbolRegions, BarCodeHandle, CodeType, DecodedDataStrings)
    * 
    get_bar_code_result (BarCodeHandle, 'all', 'decoded_strings', DecodedStrings)
    get_bar_code_result (BarCodeHandle, 'all', 'composite_strings', CompositeStrings)
    disp_message (WindowHandle, DecodedStrings + '\nComposite: ' + CompositeStrings, 'image', 36, 12, 'black', 'true')
    if (I < |TestParams| - 2)
        disp_continue_message (WindowHandle, 'black', 'true')
        stop ()
    endif
endfor
* 清除句柄
clear_bar_code_model (BarCodeHandle)

逐段分析:

*关闭窗口
dev_close_window ()
dev_open_window (0, 0, 512, 512, 'black', WindowHandle)
set_display_font (WindowHandle, 14, 'mono', 'true', 'false')

*窗口的缩放因素
ScaleWindow := 1.0

dev_set_draw ('margin')
dev_set_color ('green')
dev_set_line_width (3)

*创建模板
create_bar_code_model ([], [], BarCodeHandle)
set_bar_code_param (BarCodeHandle, 'composite_code', 'CC-A/B')

*设置最小的像素值为1.5
set_bar_code_param (BarCodeHandle, 'element_size_min', 1.5)

TestParams := []
TestParams := [TestParams,'gs1databar_stacked_composite_01','GS1 DataBar Stacked']
TestParams := [TestParams,'gs1databar_limited_composite_01','GS1 DataBar Limited']
TestParams := [TestParams,'gs1databar_limited_composite_02','GS1 DataBar Limited']
TestParams := [TestParams,'gs1databar_expanded_composite_01','GS1 DataBar Expanded']
*循环读取图片
for I := 0 to |TestParams| - 2 by 2
    File := 'barcode/gs1databar_composite/' + TestParams[I]
    CodeType := TestParams[I + 1]

    * 读取图片
    read_image (Image, File)

    *补偿过度曝光的图像:扩大黑暗区域
    *确定选定遮罩内的最小灰度值
    gray_erosion_shape (Image, Image, 1.5, 1.5, 'octagon')
    get_image_size (Image, Width, Height)
    
    *设置窗口与图像相适应
    dev_set_window_extents (0, 0, ScaleWindow * Width, ScaleWindow * Height)

    *显示信息【'条形码类型:'+代码类型】
    disp_message (WindowHandle, 'Barcode Type: ' + CodeType, 'window', 12, 12, 'black', 'true')

    *寻找条形码
    find_bar_code (Image, SymbolRegions, BarCodeHandle, CodeType, DecodedDataStrings)

    *得到结果
    get_bar_code_result (BarCodeHandle, 'all', 'decoded_strings', DecodedStrings)
    get_bar_code_result (BarCodeHandle, 'all', 'composite_strings', CompositeStrings)

    *显示信息
    disp_message (WindowHandle, DecodedStrings + '\nComposite: ' + CompositeStrings, 'image', 36, 12, 'black', 'true')
    if (I < |TestParams| - 2)
        disp_continue_message (WindowHandle, 'black', 'true')
        stop ()
    endif
endfor

* 清除句柄
clear_bar_code_model (BarCodeHandle)


 get_bar_code_result——获取条形码符号解码过程中累积的字母数字结果

decoded_strings:

以人类可读格式的字符串形式返回解码结果。此解码字符串可以针对单个结果返回,例如,对于CandidateHandle 0,或者在CandidateHandle设置为“all”时同时针对所有结果返回。请注意,解码字符串中只包含数据字符。不包括开始、停止和检查字符。对于可选的检查字符,其行为取决于“check_char”参数的值。

composite_strings:

返回GS1复合组件的解码字符串。有关更多详细信息,请参阅set_bar_code_param参数“composite_code”的说明。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值