基于Halcon学习的一维码识别【九】codabar.hdev

读取Codabar类型的条形码


总代码:

*创建模板
create_bar_code_model ([], [], BarCodeHandle)
* We expect to decode a single bar code per image
*我们希望对每张图像解码一个条形码
set_bar_code_param (BarCodeHandle, 'stop_after_result_num', 1)
*关闭窗口
dev_close_window ()
dev_open_window (0, 0, 120, 300, 'black', WindowHandle)
dev_set_color ('green')

*设置边缘描绘
dev_set_draw ('margin')
dev_set_line_width (3)
*设置显示字体
set_display_font (WindowHandle, 14, 'mono', 'true', 'false')

*循环识别6张图片
for I := 1 to 6 by 1
    *读取图片
    read_image (Image, 'barcode/codabar/codabar' + (I$'.2'))
    get_image_size (Image, Width, Height)
    *设置窗口的宽高与图片保持一致
    dev_set_window_extents (0, 0, Width - 1, Height - 1)
    dev_display (Image)
    
    *设置校验符,最后一个字符作为检验位
    set_bar_code_param (BarCodeHandle, 'check_char', 'present')
    *寻找模板
    find_bar_code (Image, SymbolRegions, BarCodeHandle, 'Codabar', DecodedDataStrings)
    *显示信息
    disp_message (WindowHandle, DecodedDataStrings, 'window', 12, 12, 'black', 'false')
    
    *定义少一个字符
    LastChar := strlen(DecodedDataStrings) - 1
    *显示信息
    disp_message (WindowHandle, DecodedDataStrings{0} + sum(gen_tuple_const(LastChar - 1,' ')) + DecodedDataStrings{LastChar}, 'window', 12, 12, 'forest green', 'false')
    if (I < 6)
        stop ()
    endif
endfor

*清除
clear_bar_code_model (BarCodeHandle)

逐段分析:

*创建模板
create_bar_code_model ([], [], BarCodeHandle)

*我们希望对每张图像解码一个条形码
set_bar_code_param (BarCodeHandle, 'stop_after_result_num', 1)

*关闭窗口
dev_close_window ()
dev_open_window (0, 0, 120, 300, 'black', WindowHandle)
dev_set_color ('green')

*设置边缘描绘
dev_set_draw ('margin')
dev_set_line_width (3)

*设置显示字体
set_display_font (WindowHandle, 14, 'mono', 'true', 'false')
*循环识别6张图片
for I := 1 to 6 by 1
    *读取图片
    read_image (Image, 'barcode/codabar/codabar' + (I$'.2'))

    *得到图像的宽高
    get_image_size (Image, Width, Height)

    *设置窗口的宽高与图片保持一致
    dev_set_window_extents (0, 0, Width - 1, Height - 1)
    dev_display (Image)

    *设置校验符,最后一个字符作为检验位
    set_bar_code_param (BarCodeHandle, 'check_char', 'present')

    *寻找模板
    find_bar_code (Image, SymbolRegions, BarCodeHandle, 'Codabar', DecodedDataStrings)

    *显示信息
    disp_message (WindowHandle, DecodedDataStrings, 'window', 12, 12, 'black', 'false')
    
    *定义少一个字符
    LastChar := strlen(DecodedDataStrings) - 1

    *显示信息
    disp_message (WindowHandle, DecodedDataStrings{0} + sum(gen_tuple_const(LastChar - 1,' ')) + DecodedDataStrings{LastChar}, 'window', 12, 12, 'forest green', 'false')
    if (I < 6)
        stop ()
    endif
endfor

*清除
clear_bar_code_model (BarCodeHandle)


'check_char':

带有可选检查字符的条形码将根据此参数进行解释。这些条形码类型包括代码39、Codabar、2/5工业条形码和2/5交错条形码。默认设置“缺席”假定不存在检查字符。在这种情况下,不执行任何检查,所有字符都作为数据返回。

当设置为“present”时,需要一个检查字符,用于验证条形码的正确性。如果校验和不匹配,则不会返回条形码结果,并且会从数据中删除校验字符本身。如果不需要这种剥离,则“保留”模式允许在数据中保留检查字符的同时验证条形码。

请注意,带有强制检查字符的条形码类型始终被视为该参数设置为“present”。这包括,例如,代码128、EAN-8、EAN-13和UPC-A。

通过使用运算符set_bar_code_param_specific,可以为不同类型的条形码专门设置此参数。

值列表:[“不存在”、“存在”、“保留”]

默认:“缺席”

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值