• Halcon一维码识别实例


    目录

    一维码识别算子

    1.创建条形码阅读器模型

    2.设置参数

    3.检测和读取图像中的条形码符号

    4.获取参数

    (1)获取一个或多个描述条码模型的参数

    (2)访问在条码符号搜索或解码过程中创建的标志性对象。

    (3)获取在条码符号解码过程中累积的字母数字结果。

    5.清除条码模型

    实例代码

    效果图


    一维码识别算子

    1.创建条形码阅读器模型

    create_bar_code_model(  GenParamNameGenParamValue , BarCodeHandle)

           参数1: 属性名(-array)(字符串):可以为条形码模型调整的通用参数的名称。

    默认值: []

    值列表:'barcode_height_min' , 'barcode_width_min' , 'check_char' , 'composite_code' , 'element_size_max' , 'element_size_min' , 'element_size_variable' , 'meas_thresh' , 'meas_thresh_abs' , 'min_code_length' , ' min_identical_scanlines' , ' num_identical_scanlines' ' , 'orientation' , 'orientation_tol' , 'persistence' , 'quiet_zone' , 'start_stop_tolerance' , 'stop_after_result_num' ,“超时”、“火车”、“upce_encoding”

          参数2: GenParamValue(输入控制)  attribute.value(-array) (实数/整数/字符串):可以为条形码模型调整的通用参数的值。

    默认值: []

    建议值: 0, 0.1, 1, 1.5, 2, 8, 32, 45, 'present' , 'absent' , 'none' , 'CC-A/B' , 'auto' , 'high' , 'low'、“真”、“假”

           参数3: BarCodeHandle(输出控制)  条码(手柄)用于使用和访问条形码模型的句柄。

    2.设置参数

    set_bar_code_param( BarCodeHandleGenParamNameGenParamValue :)
         参数1: BarCodeHandle(input_control,状态被修改)  条码(手柄)条码模型的句柄。
         参数2: GenParamName(输入控制)  属性名(-array)(字符串)为查找和解码条形码而应调整的通用参数的名称。

    默认值: 'element_size_min'

    值列表:'abort'、'barcode_height_min'、'barcode_width_min'、'check_char'、'composite_code'、'contrast_min'、'element_size_max'、'element_size_min'、'element_size_variable'、'majority_voting'、'meas_thresh'、'meas_thresh_ab ' , 'merge_scanlines' , 'min_code_length' , 'min_identical_scanlines' , 'num_scanlines' , 'orientation', 'orientation_tol' , '持久性', 'quiet_zone' , 'start_stop_tolerance' , 'stop_after_result_num' , 'timeout' , 'train' , 'upce_encodation'

    参数3::GenParamValue(输入控制)  attribute.value(-array) (实数/整数/字符串)为查找和解码条形码而调整的通用参数的值。

    默认值: 8

    建议值: 0, 0.1, 1, 1.5, 2, 8, 32, 45, 'true' , 'false' , 'present' , 'absent' , 'none' , 'CC-A/B' , 'auto' , '高' , '低' , 'ucc-12' , '零抑制'

    3.检测和读取图像中的条形码符号

    find_bar_code(Image : SymbolRegions ,BarCodeHandleCodeType ,DecodedDataStrings)

        参数1: Image(输入对象)    单通道图像对象(字节/uint2 )输入图像。如果图像具有缩小的域,则条形码搜索将缩小到该域。这通常会减少操作员的运行时间。但是,如果条码未完全在域内,则无法正确解码条码。
        参数2: SymbolRegions(输出对象)  区域(-数组) 对象成功解码的条码符号的区域。
       
        参数3: BarCodeHandle(input_control,状态被修改)  条码(手柄) 条码模型的句柄。
        参数4: CodeType(输入控制)  字符串(-数组)(字符串)搜索条码的类型。

    默认值: “自动”

    值列表:'2/5 Industrial'、'2/5 Interleaved'、'Codabar'、'Code 128'、'Code 39'、'Code 93'、'EAN-13 Add-On 2'、'EAN- 13 Add-On 5' , 'EAN-13' , 'EAN-8 Add-On 2' , 'EAN-8 Add-On 5' , 'EAN-8' , 'GS1 DataBar Expanded Stacked' , 'GS1 DataBar Expanded ' , 'GS1 DataBar Limited' , 'GS1 DataBar Omnidir' , 'GS1 DataBar Stacked Omnidir', 'GS1 DataBar Stacked' ,'GS1 DataBar 被截断'、'GS1-128'、'MSI'、'PharmaCode'、'UPC-A Add-On 2'、'UPC-A Add-On 5'、'UPC-A'、'UPC-E附加组件 2'、'UPC-E 附加组件 5'、'UPC-E'、'自动'

        参数5: DecodedDataStrings(输出控制)  字符串(-数组)(字符串)所有成功解码的条码的数据串。

    4.获取参数

    (1)获取一个或多个描述条码模型的参数

    get_bar_code_param( BarCodeHandleGenParamName ,  GenParamValue)
          参数1:  BarCodeHandle(输入控制)  条码(手柄)条码模型的句柄。
         参数2: GenParamName(输入控制)  属性名(-array)(字符串)条码模型要查询的通用参数名称。

    默认值: 'element_size_min'

    值列表:'barcode_height_min'、'barcode_width_min'、'check_char'、'composite_code'、'contrast_min'、'element_size_max'、'element_size_min'、'element_size_variable'、'majority_voting'、'meas_thresh'、'meas_thresh_abs'、'merge ' , 'min_code_length' , 'min_identical_scanlines' , 'num_scanlines' , 'orientation' , 'orientation_tol' , '持久性' ,'quiet_zone','start_stop_tolerance','stop_after_result_num','timeout','train','upce_encodation'

          参数3: GenParamValue(输出控制)  属性名(-array)(实数/整数/字符串)

    通用参数的值。

    (2)访问在条码符号搜索或解码过程中创建的标志性对象。

    get_bar_code_object(   BarCodeObjects , BarCodeHandleCandidateHandleObjectName  )
        参数1: BarCodeObjects(输出对象)  对象(-数组) 对象
    在条码检测或评估期间作为中间结果创建的对象。
        参数2: BarCodeHandle(输入控制)  条码(手柄)条码模型的句柄。
        参数3: CandidateHandle(输入控制)  整数(字符串/整数)分别指示需要数据的条码结果候选。

    默认值: “全部”

    建议值: 0、1、2、“全部”

        参数4: ObjectName(输入控制)  字符串(字符串)要返回的标志性对象的名称。

    默认值: 'candidate_regions'

    值列表:'candidate_regions'、'scanlines_all'、'scanlines_all_plain'、'scanlines_merged_edges'、'scanlines_valid'、'scanlines_valid_plain'、'symbol_regions'

    (3)获取在条码符号解码过程中累积的字母数字结果。

    get_bar_code_result(   BarCodeHandleCandidateHandleResultName ,  BarCodeResults)
        参数1: BarCodeHandle(输入控制)  条码(手柄)条码模型的句柄。
        参数2: CandidateHandle(输入控制)  整数(字符串/整数)

    分别指示需要数据的条码结果候选。

    默认值: “全部”

    建议值: 0、1、2、“全部”

        参数3: ResultName(输入控制)  属性名(字符串)

    要返回的结果数据的名称。

    默认值: 'decoded_types'

    建议值:“decoded_types”、“decoded_strings”、“decoded_data”、“decoded_reference”、“element_size”、“orientation”、“composite_strings”、“composite_reference”、“aborted”、“quality_isoiec15416”、“quality_isoiec15416_labels”、“svalue_isoie” , 'quality_isoiec15416_float_grades' , 'status' , 'status_id'

        参数4: BarCodeResults(输出控制)  属性值(-array)(字符串/整数/实数)

    列出结果。

    5.清除条码模型

    clear_bar_code_model(BarCodeHandle)

    实例代码

    1. read_image (Image, 'E:/桌面/ccc/tt.jpg')
    2. *图像模糊
    3. emphasize (Image, ImageEmphasize, 7, 7, 1)
    4. *亮、暗视
    5. * scale_image (ImageEmphasize, ImageScaled, 1, 100)
    6. dev_open_window (0, 0, 512, 512, 'black', WindowHandle)
    7. dev_display (ImageEmphasize)
    8. *创建条码模型
    9. create_bar_code_model ([], [], BarCodeHandle)
    10. *设置参数
    11. set_bar_code_param (BarCodeHandle, 'element_size_min', 4)
    12. set_bar_code_param (BarCodeHandle, 'element_size_max', 32)
    13. set_bar_code_param (BarCodeHandle, 'check_char', 'present')
    14. set_bar_code_param (BarCodeHandle, 'persistence', 1)
    15. set_bar_code_param (BarCodeHandle, 'num_scanlines', 10)
    16. set_bar_code_param (BarCodeHandle, 'start_stop_tolerance', 'high')
    17. set_bar_code_param (BarCodeHandle, 'orientation', 0)
    18. set_bar_code_param (BarCodeHandle, 'orientation_tol', 20)
    19. set_bar_code_param (BarCodeHandle, 'element_height_min', 100)
    20. set_bar_code_param (BarCodeHandle, 'stop_after_result_num', 0)
    21. *解码
    22. * smallest_rectangle2 (ImageEmphasize, Row, Column, Phi, Length1, Length2)
    23. * decode_bar_code_rectangle2 (ImageScaled, BarCodeHandle, ['Code 128','Code 39'], Row, Column, Phi, Length1, Length2, DecodedDataStrings)
    24. find_bar_code (ImageEmphasize, SymbolRegions, BarCodeHandle, ['Code 128','Code 39'], BarCodeStrings)
    25. get_bar_code_param (BarCodeHandle, 'element_size_min', GenParamValue)
    26. get_bar_code_object (BarCodeObjects, BarCodeHandle, 'all', 'candidate_regions')
    27. get_bar_code_result (BarCodeHandle, 'all', 'decoded_types', BarCodeResults)
    28. get_bar_code_result (BarCodeHandle, 0, 'quality_isoiec15416', Quality)
    29. set_display_font (WindowHandle, 16, 'mono', 'true', 'false')
    30. disp_message (WindowHandle, BarCodeResults+'码:'+BarCodeStrings, 'image', 50, 50, 'black', 'false')
    31. *清除条码模型
    32. clear_bar_code_model (BarCodeHandle)
    33. stop ()

    效果图

     

  • 相关阅读:
    Nginx 的基本介绍和使用
    Sparse稀疏检索介绍与实践
    万字长文浅析配置对MySQL服务器的影响
    2022CTF培训(二)Hook进阶&反调试
    机器学习(二):聚类算法1——K-means算法
    第二章:OSI参考模型与TCP/IP模型
    requests从一个链接下载存放在临时文件tempfile,python
    Redhawk: ir drop问题分析
    回归分析
    SpringCloud Alibaba&注册中心(nacos)&远程调用(OpenFeign)使用
  • 原文地址:https://blog.csdn.net/qq_42711010/article/details/126467464