目录

  • 1. 一维码原理
    • 1.1 定义:
    • 1.2 作用:
    • 1.3 解码:
    • 1.4 原理:
    • 1.5 构成:
  • 2. Halcon识别一维码
    • 2.1 流程:
    • 2.2 获得中间结果的算子
  • 3. 难读取的一维码
    • 3.1 产生原因:
    • 3.2 方法1:预处理
    • 3.3 方法2:设置参数
  • 4. 凹凸不平的条码(构建黑白相间的一维码)
  • 5. 环形一维码
  • 6. 圆柱面(难点)
    • 6.1 360°镜头(德鸿)
    • 6.2 线扫相机+转盘结构,
    • 6.3 投影变换
  • 7. 参数训练/模型读写/参数查询
    • 7.1. 参数训练:
  • 8. 其他码制
  • 9. 补充参数
  • 10. Halcon一维码识别源代码下载地址:

1. 一维码原理

1.1 定义:

人们用一些黑白相间的条纹构成的图案叫一维码,也叫条码。

1.2 作用:

它可以很方便的将一些信息,通过算法存储到图案中(编码)。

1.3 解码:

识别一维码,把信息通过算法解析出来。

1.4 原理:

二进制编码。

1.5 构成:

静区:起始码:资料码:校验区:终止码:

2. Halcon识别一维码

2.1 流程:

  • 创建条码模型:create_bar_code_model
  • 设置条码模型参数:set_bar_code_param
  • 条码查找解析:find_bar_code
  • 清除条码模型:clear_bar_code_model

2.2 获得中间结果的算子

  • 获得中间对象结果:get_bar_code_object
  • 获得条码模型参数:get_bar_code_param
  • 获得中间数据结果:get_bar_code_result

3. 难读取的一维码

3.1 产生原因:

  • 光照不理想
  • 条码本身存在残缺或干扰

3.2 方法1:预处理

  • 暗视野 scale_image
  • 亮视野 scale_image
  • 图像模糊: 增强 emphasize

3.3 方法2:设置参数

  • persistence:保留中间重要结果,当想要获得模型解码后的扫描线之前,此参数设为1。
  • majority_voting:多数表决,多条扫描线共同决定。
  • barcode_width_min:整个条码最小宽度,当条码像素大小比较固定时,设置此参数。
  • barcode_height_min:整个条码最小高度,当条码像素大小比较固定时,设置此参数。
  • element_size_min:条码模块的最小尺寸,模块是条码的基本单元。
  • element_size_max:条码模块的最大尺寸,当条码模块间隙比较小(在1-1.5像素)或比较大(大于8像素)时,考虑设置此参数。
  • contrast_min:当光照比较暗时,可以通过这个参数适当增加对比度。
  • element_size_variable:当条码模块变形扭曲时,此参数设置为true.此参数只针对三种码制:其他码需要自己做几何变换:获取码制函数 ==get_bar_code_result ==
    • GS1 DataBar Limited
    • GS1 DataBar Expanded
    • GS1 DataBar Expanded Stacked
  • stop_after_result_num:想找指定个数的条码时,设置此参数。
  • check_char:条当一维码存在校验符时,设置此参数。
  • min_code_length:最小字符长度。
  • num_scanlines:扫描线数量,设置为零是默认扫描线数,不同码制,默认扫描线数不同。当想指定扫描线数量时考虑此参数。
  • merge_scanlines:扫描线融合(只在高版本中才有)例子:defect_ean13,当条码有一部分被遮挡,考虑使用此参数。 扫描线相关参见例子:inspect_scanlines
  • meas_thresh_abs: meas_thresh:相对阈值和绝对阈值/当条码边缘比较明显,但是里面存在干扰噪声,可能存在假边,考虑使用此参数。
  • composite_cod:当你想解码复合码的时候,设置此参数
  • abort: 中断其他线程使用 find_bar_code
  • quiet_zone: 净空区验证,净空区有干扰时,考虑设置此参数。
  • start_stop_tolerance: 起始终止损坏容差,默认值是 high,设为low时性能下降,只适用于128码

4. 凹凸不平的条码(构建黑白相间的一维码)

  • 打光(同轴光)
  • 算法
  • 三维设备 ==> 扫描出深度图(3D结构光,线激光)

5. 环形一维码

  • 将环形拉直(极坐标转换)在OCR中讲解

6. 圆柱面(难点)

6.1 360°镜头(德鸿)

  • 外壁镜头 => 极坐标转换
  • 内壁镜头 => 极坐标转换

6.2 线扫相机+转盘结构,

  • 让圆柱体转一圈

6.3 投影变换

  • 例子:grid_rectifiction

    1. 打印一张棋盘格(生成棋盘格文件算子:create_rectifiction_grid)
    2. 将棋盘格贴到圆柱物体表面
    3. 使用函数:
      • 找到棋盘格的区域和图像:手动或者使用 find_rectifiction_grid
      • 棋盘格角点检测:
      • 角点是指局部灰度变化剧烈的地方。
      • 角点检测算子:saddle_points_sub_pix
      • 画出十字轮廓算子:gen_cross_contour_xld
      • 将角点连接成网格
        conne_grid_points
      • 产生投影map映射
        映射:gen_grid_rectifiction_map
        拉直:map_image
        使用映射识别二维码

7. 参数训练/模型读写/参数查询

  • 例子:barcode_training

7.1. 参数训练:

  • bar_code_training 自动确定最佳参数,但是也不能全信。

    • ‘train’
    • 'all’全部参数训练
    • 'element_min’之训练一个参数
    • '~all’取消训练
    • 注意:在训练模式下,码制不能写 ‘auto’,必须是具体码制。
    • 查询参数算子:query_bar_code_params

8. 其他码制

9. 补充参数

  • 角度 ‘orientation’
  • 角度公差 ‘orientation_tol’

10. Halcon一维码识别源代码下载地址:

链接:https://pan.baidu.com/s/1taJWdIw_og3-Gub6ngE3pg
提取码:uz9w

Halcon 一维码(条形码)相关推荐

  1. halcon一维码识别

    halcon一维码识别 1.创建模板 create_bar_code_model (GenParamName, GenParamValue, BarCodeHandle) GenParamName 可 ...

  2. Halcon一维码和二维码识别

    Halcon一维码和二维码识别 一.Halcon一维码识别 二.Halcon二维码识别 一.Halcon一维码识别 1.一维码的识别过程: (1).创建条码模型create_bar_code_mode ...

  3. Halcon一维码识别实例

    目录 一维码识别算子 1.创建条形码阅读器模型 2.设置参数 3.检测和读取图像中的条形码符号 4.获取参数 (1)获取一个或多个描述条码模型的参数 (2)访问在条码符号搜索或解码过程中创建的标志性对 ...

  4. 使用OpenCV+Zbar一维码(条形码)识别

    1. 工具 opencv4.5.1 + Zbar库. opencv4集成了二维码检测,但没条形码检测,这里用常规zbar库进行识别. zbar库的下载与安装: 首先配置zbar库: Zbar安装包下载 ...

  5. Halcon 一维码识别

    一.图像预处理和条码增强 对比度太低:scale_image(或使用外部程序scale_image_range),增强图像的对比度. 图像模糊:emphasize锐化图像,使条码看起来更清晰. 深色背 ...

  6. halcon 一维码读取

    *创建条码读取模版 create_bar_code_model ([], [], BarCodeHandle)*成功解码到一个条形码后将解码停止 set_bar_code_param (BarCode ...

  7. Halcon解决方案指南(16)一维码识别

    第16章 一维码识别_BarCode create_bar_code_model创建条形码模型.返回的句柄提供有关条形码结构的所有必要信息. find_bar_code读取条形码.可以指定要搜索的模型 ...

  8. Halcon图像的一维码二维码识别

    7.1识别一维码的流程和方法 一维码的码制: 一维条码即指条码条和空的排列规则,常用的一维码的码制包括:EAN 码.39 码. 交叉 25 码.UPC 码.128 码.93 码,ISBN 码,及 Co ...

  9. halcon的一维码与二维码的识别

    一维码.二维码在生活中经常看到,如下图: 现在就开始用halcon做个实时采集识别吧! 一维码识别 点击助手打开新的Image Acquisition,然后检查相机连接设备和设置参数后插入代码,代码如 ...

最新文章

  1. Python之面向对象进阶
  2. mysql分库分表风险_数据库分库分表存在的问题及解决方案
  3. linux多个客户端如何通信_linux实现多个客户端通信进阶
  4. [数据库] Navicat for Oracle基本用法图文介绍
  5. SQL Server 索引结构及其使用(一)
  6. ssh连接+执行系统命令
  7. AJAX与SQL Server(一)
  8. P4593-[TJOI2018]教科书般的亵渎【拉格朗日差值】
  9. 如何以大数据的JAX-RS响应的形式将JPA结果流化/序列化
  10. vector和list容器有哪些区别
  11. SPI驱动0.96/1.3寸 OLED屏幕,易修改为DMA控制
  12. Vector的使用详解
  13. python使用spark-sql读取数据并可视化_使用Spark SQL读取HBase上的数据
  14. keepalived vip mysql_mysql+keepalived高可用集群
  15. linux yum被占用
  16. linux系统可以在移动硬盘,如何在移动硬盘上装LINUX系统?
  17. PIXI.JS一镜到底动画
  18. RN + Flutter
  19. 41家大公司年度福利比较 大公司福利档案揭秘
  20. uniapp——uni-admin后台管理系统(使用uniCloud免费云服务器)

热门文章

  1. 在CentOS 8上安装与配置Apache虚拟主机
  2. 实战 | F1060防火墙透明模式典型组网配置案例(access)
  3. 查看unix和linux的HBA卡的WWN地址
  4. 【Hadoop】Hadoop生态圈基本组件介绍
  5. 网络管理与维护作业11
  6. RHEL6解决无法使用YUM源问题
  7. python中日志logging模块和异常捕获traceback模块的使用
  8. el-upload进度条无效,on-progress无效问题解决方案
  9. 使用类名称创建实例并调用构造函数
  10. 远程源已存在于“ git push”到新存储库中