跳转至

码检测:读取一维码和二维码

码检测只干一件事:把框里的码解出来。解得出来就 PASS,解不出来就 NG。解出来的内容还能拿去当产品 SN、发给 MES 或 PLC。

如果还要核对码下面那行明文印得对不对,用条码字符对。

前置条件

  • 检测方案里已经有标签外框,并且训练过。
  • 码在图上够清晰:黑白分明、不反光、条纹分得开。

它包含哪些检测框

码检测下面只有一个检测框,里面挂两个:

检测框 干什么 默认
搜索参数 允许码相对模板漂多大范围 开
调整参数 解码的全部设置,以及对结果的后处理 开

码检测不支持细节检测框、屏蔽框,也不支持"添加到副模板"。

支持的码制有三类,在"调整参数"的"解码类型"里选:

  • 条码 —— 一维码。先用主解码器读,读不到自动换备用解码器再读一遍,两道都过不了才算失败;"调整参数"里的"解码方式"会显示这一件是哪一道解出来的——经常走到备用解码器,说明框或打光该调了。
  • 二维码 —— QR 码。
  • DataMatrix —— 工业上常见的方形点阵码。

新建与画框

  1. 点工具栏"新建检测项",类型选"码检测",确定。
  2. 把绿框拖到码上。把框画大,不要贴着码的边缘切:
    • 二维码要把四周的静区(空白边)也框进去,静区不够解码库就认不出来。
    • 标签是手工贴的,漂个上百像素很常见,框大一点比什么参数都管用。
  3. 打开"调整参数",把"解码类型"选成码的真实类型。
  4. Ctrl+T"训练工程",再"单模板运行",看"结果"里有没有解出内容。
  5. 这个码是产品 SN 的话,在树里选中这个检测项右键"设置为SN码";要把内容送给通讯口或逻辑检测用,右键"设为自定义变量"。

模板图上比二维码大一圈、把静区完整包进去的码检测框

参数说明

搜索参数

参数 含义 调参建议
横向偏移容忍绝对值 允许码相对模板往左右各漂多少像素 默认 30,也就是左右各 15 像素,对手工贴标来说太小了。手贴标签建议给到 200 以上
纵向偏移容忍绝对值 上下方向同上 同上
横向锁定 / 纵向锁定 批量改参数时不动这一项 一般不用

调整参数

参数 含义 调参建议
解码类型 二维码 / 条码 / DataMatrix 必须选对。选错一张都解不出来,而且不会有别的提示
横向拉伸比例 解码前把图横向拉几倍 默认 1。码被打印机压扁、条纹挤在一起时调到 1.5~2
纵向拉伸比例 纵向同上 默认 1
过滤冒号 快捷按钮,点一下把"正则表达式"填成过滤冒号的规则 码里带冒号而下游不收时点它
正则表达式 匹配到的字符会从结果里删掉 留空就不处理。只在下游明确要求去掉某些字符时才填
起始位 / 长度 "裁切结果"的两个值:结果从第几位开始取、取几位 码很长而下游只要其中一段时用。长度填 0 表示不裁
比对字符 "无铭文固定字符比对":解出来的内容必须完全等于这一串,否则 NG 用在"这条线上的码永远是同一个"的场合;内容每件都变时别开
扫到多个不同的码 "多码处理":"判NG(默认)" 或 "按正则筛选" 框里只可能有一个码就用默认。标签上叠了两个码、框又画不开时选"按正则筛选"
正则 选"按正则筛选"才能填,只保留匹配的码,恰好剩一个才通过 例:两个码里只有一个以 2636 开头,填 ^2636。写错了输入框会变红
解码失败自动扩大搜索区重试(×1.5/×2/×3) 第一次没解出来时,自动把区域按中心放大 1.5 倍、2 倍、3 倍各试一次 默认开着,别关。它专治"框画小了 + 标签漂了"造成的偶发漏读。放大到超过 4096 像素或盖满整图就自动停
解码方式 只读,主解码器 / 备用解码器 多数件应走主解码器

按正则筛选会连单码一起卡

选了"按正则筛选"以后,哪怕框里只有一个码,这个码也必须匹配正则才算过。这等于多了一道内容校验:能挡住串料,但正则写窄了会误杀。

训练与调试

  1. 改过框的位置就要 Ctrl+T"训练工程"。改解码参数不用训练。
  2. 右键"运行此检测项",打开"调整参数"看"结果"那一栏:
    • 有内容 = 解出来了。
    • 未检测到值 = 一张也没解出来。
    • 多码NG: ... 开头 = 扫到了多个不同的码。
    • 正则不匹配(...): ... 开头 = 开了正则筛选但码不匹配。
  3. 右边图片下拉框选"输入图片",看实际送去解码的那块图。码被切掉边、静区不够、整块糊掉,在这里都看得出来。
  4. 后三种结果串只是说明文字,不是码值。送去 SN、自定义变量和通讯输出的一律是空串,下游不会收到这些提示文字。

调之前先确认码本身没问题

拿手机扫一下实物。手机都扫不出来,就不是软件参数的事,先解决打印质量或打光。

常见误判与处理

现象 原因 调哪里
一张都解不出来 解码类型选错 "解码类型"改成码的真实类型
平时都好,偶尔几件解不出来 框画得刚好贴着码,标签漂一点就切到码 把框画大盖住整张标签或整个码加静区,这是最有效的办法。同时确认"解码失败自动扩大搜索区重试"开着
框已经很大还是偶发漏读 搜索扩张不够 把"横向偏移容忍绝对值"和"纵向偏移容忍绝对值"加大到 200 以上
小尺寸二维码解不出 裁出来的图太小,解码库吃不消 软件在二维码模式下会自动把小图放大再解;仍解不出就调"横向拉伸比例"和"纵向拉伸比例",或把相机拉近
码反光、一半发白 打光问题 调光源角度或换漫射光罩,软件侧调不出来
结果里多了或少了字符 填了"正则表达式"或开了"裁切结果" 清空正则;把"长度"设回 0
结果是 多码NG 框里盖到了两个码 框画小只盖一个;或用"按正则筛选"加正则
明明有码却判 NG,结果串是对的 开了"无铭文固定字符比对"而内容不等于比对字符 关掉它,或把比对字符改对
解码很慢 搜索范围太大,或一直在走扩大重试 先把框画准让第一次就能解出来;不要把偏移容忍值设成几千

相关页面