一维码---25industrial.hdev(读取2/5工业条形码)

目录

一、程序源码分析

二、相关算子

1、create_bar_code_model ([], [], BarCodeHandle)

2、set_bar_code_param (BarCodeHandle, 'stop_after_result_num', 1) 

3、set_bar_code_param_specific (BarCodeHandle, '2/5 Industrial', 'min_code_length', 1) 

4、dev_set_window_extents (0, 0, Width - 1, Height - 1)

5、find_bar_code (Image, SymbolRegions, BarCodeHandle, '2/5 Industrial', DecodedDataStrings)

三、结果显示


一、程序源码分析

*创建条形码模型句柄

create_bar_code_model ([], [], BarCodeHandle)
*设置参数:对每张图像解码一个条码
set_bar_code_param (BarCodeHandle, 'stop_after_result_num', 1)

*有些代码显示最小码长为1位。因此,我们需要减少这个应用程序的默认设置

*注意,在实际应用程序中不建议这样做,因为可能会出现更多的错误读取。
set_bar_code_param_specific (BarCodeHandle, '2/5 Industrial', 'min_code_length', 1)

dev_close_window ()
dev_open_window (0, 0, 120, 300, 'black', WindowHandle)
set_display_font (WindowHandle, 14, 'mono', 'true', 'false')
dev_set_draw ('margin')
dev_set_line_width (3)


for I := 1 to 4 by 1
    read_image (Image, 'barcode/25industrial/25industrial0' + I)
    get_image_size (Image, Width, Height)
    dev_set_window_extents (0, 0, Width - 1, Height - 1)
    dev_display (Image)
    dev_set_color ('green')


    *取条形码,结果字符串包含检查字符(不使用校验码)
    set_bar_code_param (BarCodeHandle, 'check_char', 'absent')
    find_bar_code (Image, SymbolRegions, BarCodeHandle, '2/5 Industrial', DecodedDataStrings)
    disp_message (WindowHandle, DecodedDataStrings, 'window', 12, 12, 'black', 'false')
    LastChar := strlen(DecodedDataStrings) - 1
    disp_message (WindowHandle, sum(gen_tuple_const(LastChar,' ')) + DecodedDataStrings{LastChar}, 'window', 12, 12, 'forest green', 'false')
    stop ()


    *使用检查字符读取条形码以检查结果,即检查字符不再属于返回的字符串,如果校验字符不正确,则读取条码失败
    dev_set_color ('green')
    set_bar_code_param (BarCodeHandle, 'check_char', 'present')
    find_bar_code (Image, SymbolRegions, BarCodeHandle, '2/5 Industrial', DecodedDataStrings)
    disp_message (WindowHandle, DecodedDataStrings, 'window', 36, 12, 'black', 'false')
    dev_set_color ('magenta')


    if (I < 4)
        stop ()
    endif
endfor

二、相关算子

1、create_bar_code_model ([], [], BarCodeHandle)

  • 原型:create_bar_code_model( : : GenParamName, GenParamValue : BarCodeHandle)

  • 定义

    • 创建一个通用模型,用于读取支持的所有类型的条形码符号

    • 该操作符的结果条形码模型的句柄(BarCodeHandle),用于对条形码的所有进一步操作,如修改模型、读取符号或访问符号搜索的结果

    • 一般来说,不需要对参数进行任何额外的调整,就可以找到并解码条形码。因此,GenParamName和GenParamValue默认为空元组

    • 条码图像质量差或几何特征异常的情况下,成功解码条码符号需要特殊的参数设置,在创建条码模型时就可以调整参数。可以通过应用操作符set_bar_code_paramset_bar_code_param_specific来更改参数

  • 参数:可修改参数的名称,参数的数值,返回的条形码模型的句柄

2、set_bar_code_param (BarCodeHandle, 'stop_after_result_num', 1) 

  • 设置参数:对每张图像解码一个条码

  • 原型:set_bar_code_param( : : BarCodeHandle, GenParamName, GenParamValue : )

  • 定义

    • 用于设置或更改条形码模型的不同参数,以适应条形码的特殊属性或图像中的特定外观

    • 可以使用get_bar_code_param查询条形码模型的当前配置

  • 参数:对给定的条形码模型设置参数,可修改参数的名称,参数的数值

3、set_bar_code_param_specific (BarCodeHandle, '2/5 Industrial', 'min_code_length', 1)

  • 有些代码显示最小码长为1位。而这个应用程序的默认设置为3,我们需要修改它
  • 原型:set_bar_code_param_specific( : : BarCodeHandle, CodeTypes, GenParamName, GenParamValue : )

  • 定义

    • 与set_bar_code_param相反,使用set_bar_code_param_specific只会更改选定条码类型的参数

    • 当在一个图像中搜索不同的代码类型时,这很有用

    • 可以使用get_bar_code_param_specific查询指定条码类型的条码模型的当前配置

  • 参数:对给定的条形码模型设置参数,条形码类型的名称,可修改参数的名称,参数的数值

  • 注意,在实际应用程序中不建议这样做,因为可能会出现更多的错误读取

4、dev_set_window_extents (0, 0, Width - 1, Height - 1)

  • 更改活动浮窗的位置与大小

  • 原型:dev_set_window_extents( : : Row, Column, Width, Height : )

  • 定义

    • 参数Row和Column指定窗口的新位置(左上角)

    • 参数Width和Height指定窗口的新大小。这是真正显示标志性物体的内部部分的大小。如果这两个值中的一个是负数,则该维度将保持不变

  • 参数:左上角行列索引,窗口宽高

5、find_bar_code (Image, SymbolRegions, BarCodeHandle, '2/5 Industrial', DecodedDataStrings)

  • 原型:find_bar_code(Image : SymbolRegions : BarCodeHandle, CodeType : DecodedDataStrings)

  • 定义

    • 查找并读取给定图像(image)中的条形码符号,并返回解码后的数据,解码后的字符串在DecodedDataStrings中返回,并在SymbolRegions中返回相应的条形码区域

    • 在一幅图像中,可以读取任意数量的单一类型的条形码,所需条码符号的类型由CodeType给出

    • 对于总共n个成功读取的条形码,从0到(n-1)的索引可以作为操作符get_bar_code_objectget_bar_code_result中的候选句柄,以检索特定条形码的所需数据

  • 应用

    • 条形码应该在明亮的背景下显示为黑色,要在深色背景上读取浅色条形码,请事先使用操作符invert_image对输入图像进行反转

    • 通常,DecodedDataStrings只包含数据字符

    • 对于带有强制校验字符的条形码,校验字符不包含在字符串中

    • 对于带有可选校验字符的条形码,例如Code 39、Codabar、2/5 Industrial或2/5 Interleaved,结果取决于'check_char'参数的值

      • 'absent':默认设置假设没有校验字符。在这种情况下,不执行检查,所有字符都作为数据返回

      • 'present':将期望使用一个检查字符来验证条形码的正确性。如果校验码与运算结果不匹配,条码将认为读取失败,符号区域和解码后的字符串不会出现在结果字符串列表(DecodedDataStrings)和结果区域列表(SymbolRegions)中,校验字符本身从数据中剥离

      • 如果不需要这种剥离,则'preserved'模式允许在保持数据中的校验字符的同时验证条形码

  • 参数

    • 输入图像。如果图像有一个缩小的域,则条形码搜索缩小到该域,这通常会减少运算符的运行时间;如果条码不完全在域中,则无法正确解码条码

    • 返回的成功解码的条码符号的区域

    • 条形码模型句柄

    • 搜索的条形码类型

    • 返回检测的数据值

三、结果显示

                                    ​​​​​​​                                                                        

  

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

盾山狂热粉

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

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

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

打赏作者

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

抵扣说明:

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

余额充值