条形码识别(2)——获取条形码条空(bar&space)宽度

本文介绍如何获取条形码的条空(bar&space)宽度,通过图像预处理、扫描像素变化来确定宽度,从而识别条形码。通过实例展示了算法的实现过程,并分析了实际应用中的优化策略。
摘要由CSDN通过智能技术生成

条形码识别(2)——获取条形码条空(bar&space)宽度

标签: 机器视觉 条形码识别 Python

请先阅读条形码识别(1)——基础知识


1.目标

  • 条形码与其表示的数字字符按照下表对应,其中1表示一个单位黑条,0表示一个单位白空

  • 比如下图就表示左侧字符1的奇数编码(A子集)

  • 条形码从起始符到终止符一共有59个bar和space,95个单位长度

  • 获得从起始符到终止符的像素宽度,然后除以95,就可以得到单位长度的像素数

  • 将每个bar和space的像素宽度除以单位长度的像素数,就可以得到每个bar和space在表中的宽度

举个例子,从起始符到终止符一共有190个像素,那么单位长度的像素数就是(190/95=2),某个字符的bar和space宽度是[4, 4, 4, 2],将其转化为表中的宽度[2, 2, 2, 1],查表可得该字符为1

2.算法

  • 获取条形码bar和space宽度最简单的方法就是沿着某一行从头至尾扫描,简便起见,先只扫描一行,且该行为条形码中间行
  • 对图像应当进行简单的预处理,灰度化(多通道图转为单通道图)->二值化->中值滤波
  • 设置3个变量,currentPix表示当前像素值,pos 表示上次像素值变化的位置,lastPix表示上次像素值变化的位置的像素,当currentPix != lastPix时,记录下当前位置与pos的差,即当前bar或者space的宽度,然后更新pos
  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值