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

读取类型代码39的条形码


总代码:

create_bar_code_model ([], [], BarCodeHandle)
dev_close_window ()
dev_open_window (0, 0, 120, 300, 'black', WindowHandle)
dev_set_draw ('margin')
dev_set_line_width (3)
Colors := ['forest green','magenta']
set_display_font (WindowHandle, 14, 'mono', 'true', 'false')
for I := 1 to 6 by 1
    read_image (Image, 'barcode/code39/code39' + (I$'.2'))
    dev_resize_window_fit_image (Image, 0, 0, -1, -1)
    set_bar_code_param (BarCodeHandle, 'element_size_max', 6)
    find_bar_code (Image, SymbolRegions, BarCodeHandle, 'Code 39', DecodedDataStrings)
    dev_display (Image)
    dev_display (SymbolRegions)
    get_bar_code_object (BarCodeObjects, BarCodeHandle, 'all', 'symbol_regions')
    get_bar_code_result (BarCodeHandle, 'all', 'decoded_strings', BarCodeResults)
    for J := 0 to |DecodedDataStrings| - 1 by 1
        dev_set_color (Colors[J])
        select_obj (BarCodeObjects, ObjectSelected, J + 1)
        dev_display (ObjectSelected)
    endfor
    disp_message (WindowHandle, DecodedDataStrings, 'window', 12, 12, Colors, 'true')
    if (I < 6)
        disp_continue_message (WindowHandle, 'black', 'true')
        stop ()
    endif
endfor
clear_bar_code_model (BarCodeHandle)

逐段分析:

*创建模板
create_bar_code_model ([], [], BarCodeHandle)
dev_close_window ()
dev_open_window (0, 0, 120, 300, 'black', WindowHandle)

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

*定义两个颜色
Colors := ['forest green','magenta']
set_display_font (WindowHandle, 14, 'mono', 'true', 'false')
*循环读取六张图片
for I := 1 to 6 by 1
    *读取图片
    read_image (Image, 'barcode/code39/code39' + (I$'.2'))

    *设置窗口和图像适应大小
    dev_resize_window_fit_image (Image, 0, 0, -1, -1)

    *设置参数
    set_bar_code_param (BarCodeHandle, 'element_size_max', 6)

    *找到条形码
    find_bar_code (Image, SymbolRegions, BarCodeHandle, 'Code 39', DecodedDataStrings)
    dev_display (Image)
    dev_display (SymbolRegions)

    *得到识别过程中的区域
    get_bar_code_object (BarCodeObjects, BarCodeHandle, 'all', 'symbol_regions')

    *得到结果
    get_bar_code_result (BarCodeHandle, 'all', 'decoded_strings', BarCodeResults)

    *依次循环颜色和区域
    for J := 0 to |DecodedDataStrings| - 1 by 1
        dev_set_color (Colors[J])
        select_obj (BarCodeObjects, ObjectSelected, J + 1)
        dev_display (ObjectSelected)
    endfor

    *显示结果
    disp_message (WindowHandle, DecodedDataStrings, 'window', 12, 12, Colors, 'true')
    if (I < 6)
        disp_continue_message (WindowHandle, 'black', 'true')
        stop ()
    endif
endfor
clear_bar_code_model (BarCodeHandle)


'element_size_max'

基本条形码元素的最大尺寸(也称为“模块”或“窄条”,取决于特定条形码类型),即最窄条的最大宽度和特定条形码类型的空间。“element_size_max”的值以像素为单位定义。它应该足够低,这样两个相邻的条形码就不会融合成一个。另一方面,该值应足够高,以便找到完整的条形码区域。

典型值:[4.0…60.0]

值范围:[1…256]

默认值:8.0

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值