LabVIEW条形码识别(实战篇—5)

LabVIEW条形码识别(实战篇—5)条形码可分一维和二维两大类 一维码将宽度不等的多个黑条和空白按照一定的编码规则排列 用来表示一组信息

目录

1、一维码识别

2、二维码识别


条形码(Barcode)是将宽度不等的多个黑条和空白,按照一定的编码规则排列,用以表达一组信息的图形标识符。常见的条形码是由反射率相差很大的黑条(简称条)和白条(简称空)排成的平行线图案。条形码可以标出物品的生产国、制造厂家、商品名称等许多信息,因而在商品流通、图书管理、邮政管理、银行系统等许多领域都得到广泛的应用。

条形码可分一维和二维两大类。一维码将宽度不等的多个黑条和空白按照一定的编码规则排列,用来表示一组信息。常见的一维码是由反射率相差很大的黑条和白条排成的平行线图案,如下所示:

LabVIEW条形码识别(实战篇—5)

一维码识别效果视频如下所示:

二维码包括堆叠式条码和矩阵式条码两大类,堆叠式条码通过对多个一维码堆叠构成,矩阵式条码则使用黑白矩形图案表示数据,如下所示:

LabVIEW条形码识别(实战篇—5)

二维码识别效果视频如下所示:

条码具有成本低、灵活易用、使用效率高和可靠性强等优点。条码制作仅仅需要印刷,识别设备的构造也很简单,与其他自动化识别技术相比,成本相当低廉。条码符号可以手工键盘输入,条码识别设备操作简易,也可以和有关设备组成识别系统实现自动化识别,或者和其他控制设备联系起来实现整个系统的自动化管理。条码的读取准确率远远超过人工方式,平均每15 000个字符才会出现一个错误。此外,条码的读取速度很快相当于每秒40个字符。

1、一维码识别

一维码将多个宽度不同的竖直黑色条纹(Bar)和空白(Space)按一定的规则排列来表示信息,下图显示了一维码的结构示意图:

LabVIEW条形码识别(实战篇—5)

其中,条码的空白区在左、右两端,一般来说它必须是窄条宽度的10倍以上,如果边缘宽度不够,条码读取器就无法对其数据进行扫描。起止符是用于表示数据开始和结束的字符,它根据条码类型不同而不同。有些采用A、B和D,有些则采用*。数据部分包括信息字符的条码图案,信息字符可以是数字、字母或其他特殊字符。校验位用于和读取值中计算得到的数据进行比较,以校验读取值是否有错,一般直接附在数据信息后。一维码可由两种或多种宽度的条纹和空白构成,编码时条纹和空白区域可以被离散或连续使用。

Nl Vision为一维码的读取提供了专门的函数IMAQ Read Barcode 2,它封装了对条码的复杂解码过程。该函数位于LabVIEW的视觉与运动→Machine Vision→Instrument Readers函数选板中,如下图所示:

LabVIEW条形码识别(实战篇—5)

函数说明及使用可参见帮助手册: 

LabVIEW条形码识别(实战篇—5)

函数IMAQ Read Barcode 2可支持下表列出的各种类型的条码。

LabVIEW条形码识别(实战篇—5)

由于交错式Code25码、Code39码和Code93码并无校验位,因此在读取这几类条码时,可以关闭该函数的校验参数。此外,Pharmacode较为简单,其他条码极容易被误读为此类条码,因此在使用IMAQ Read Barcode 2函数读取其他类型的条码时,一般要禁用它对Pharmacode的支持功能。

条码图像的分辨率、亮度漂移、条纹的灰度一致性和噪声是影响IMAQ Read Barcode2读取结果的几个主要因素。条码图像的分辨率由条纹和空白区域的最小宽度来决定,一般来说它们的宽度不得少于3个像素才能被正确读取。图像的亮度漂移太大时也会影响读取结果的正确性。

通过一个一维码读取实例,了解一维码的应用方法,程序设计思路如下所示:

  • While循环中的代码会逐一读取保存在Barcode文件夹中的各个图像,然后使用IMAQ Read Barcode 2从图像中搜索各类条码的位置,并对它们进行解码;
  • 读取过程结束后,For循环中的代码会对条码的结果进行解析,并将条码的边界矩形、条码信息和类型以叠加图层或数组的方式显示到界面上。

程序实现如下所示:

LabVIEW条形码识别(实战篇—5)

程序运行效果如下所示:

LabVIEW条形码识别(实战篇—5)

项目资源下载:项目实战:LabVIEW一维码识别(条码识别)-嵌入式文档类资源-CSDN下载

2、二维码识别

二维码是对堆叠式条码和矩阵式条码的统称。堆叠式条码通过堆叠多个一维条码构成,矩阵式条码则在一个矩形空间内通过黑白图案的不同分布对数据进行编码,如下图所示:

LabVIEW条形码识别(实战篇—5)

一维码仅使用一个方向上的条纹宽度代表数据,通常最多包含30个字符。二维码在水平和垂直方向上都包含数据,最多可包含3000个字符。当数据量相同时,二维码的尺寸要比一维码小很多,因此它可印刷在空间有限的电子产品和其他小部件上。此外,矩阵式二维码还引入了位置定位和容错机制,不仅可使用方框、L形框或专门的定位图案可靠地探测条码位置,还能在条码有损的情况下(如有污渍)正确还原信息。

下图显示了QR码的典型结构示意图,可以看出QR码是一种典型的矩阵式二维码主要由以下几个部分构成:

  • 空白区域(Quiet Zone);
  • 3个定位标识(Finder Pattern) ;
  • 对准标志(Alignment Pattern);
  • 定时标识(Timing Pattern) ;
  • 黑色和白色数据单元(Data Cell)和纠错码(Error Check and Correction Cell);
  • 用于解码的格式信息(Formatting Information)等。

LabVIEW条形码识别(实战篇—5)

QR码是矩阵式二维码的一种,其尺寸可包含21×21到177×177个数据单元。由于其右下角有对准标志,其他3个角上有定位标志,因此可以从QR码的任一方向对其进行快速读取。QR码内置了错误检查和纠正(ECC)机制,它可以通过标准Reed-Solomon方案对污点、脱墨和数据丢失等条码损坏按照4种不同纠错级别(L、M、Q、H)进行恢复如下图所示。数据的恢复率随着所选的纠错级别不同各异(L级为7%、M级为15%、Q级为25%、H级为30%)。

LabVIEW条形码识别(实战篇—5)

通过一个QR码读取的实例,了解二维码的应用方法,程序设计思路如下所示:

  • 程序代码结构比较简单,在将包含QR码的图像读入内存后,就直接调用位于LabVIEW的视觉与运动→Machine Vision→Instrument Readers函数选板中的IMAQ Read QR Code函数,从图像中搜索单个或多个QR码并对其进行解码。
  • 程序还通过记录读取前后的时间值来计算QR码搜索和读取过程的耗时。最后在图像中用无损图层标出QR码所在位置,并显示图像。

程序实现如下所示:

LabVIEW条形码识别(实战篇—5)

程序运行效果如下所示:

LabVIEW条形码识别(实战篇—5)

项目资源下载: 项目实战:LabVIEW二维码识别-嵌入式文档类资源-CSDN下载

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/204665.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 下午7:49
下一篇 2026年3月19日 下午7:49


相关推荐

  • Java关键字(50个)(超详细!)[通俗易懂]

    Java关键字(50个)(超详细!)[通俗易懂]关键字大致含义abstract表明类或者成员方法具有抽象属性assert断言,用来进行程序调试boolean基本数据类型之一,声明布尔类型的关键字break提前跳出一个块byte基本数据类型之一,字节类型case用在switch语句之中,表示其中的一个分支…

    2022年7月8日
    26
  • java帝国时代_new java project

    java帝国时代_new java project1.C语言帝国的统治现在是公元1995年,C语言帝国已经统治了我们20多年,实在是太久了。1972年,随着C语言的诞生和Unix的问世,帝国迅速建立统治,从北美到欧洲,从欧洲到亚洲,无数程序员臣服在他的脚下。帝国给我们提供了极好的福利:贴近硬件,运行极快,效率极高。使用这些福利,程序员们用C开发了很多系统级软件,操作系统,编译器,数据库,网络系统..

    2026年2月25日
    10
  • hexo史上最全搭建教程[通俗易懂]

    花了几天搭建了个网站,先上链接,欢迎来访:fangzh的个人博客现在市面上的博客很多,如CSDN,博客园,简书等平台,可以直接在上面发表,用户交互做的好,写的文章百度也能搜索的到。缺点是比较不自由,会受到平台的各种限制和恶心的广告。而自己购买域名和服务器,搭建博客的成本实在是太高了,不光是说这些购买成本,单单是花力气去自己搭这么一个网站,还要定期的维护它,对于我们大多数人来说,实在是没…

    2022年4月8日
    222
  • 计算机odbc数据源管理位置,使用 ODBC 数据源管理器

    计算机odbc数据源管理位置,使用 ODBC 数据源管理器若要配置 MicrosoftSQL 数据源 请使用 ODBC 数据源管理器 可以通过在 控制面板 中单击 数据源 ODBC 来启动 ODBC 数据源管理器 使用 ODBC 数据源管理器可以 显示系统当前安装的 SQLServerODB 驱动程序的版本信息 添加 更改和删除 SQLServerODB 驱动程序的数据源 ODBC 数据源管理器还可以为用

    2026年3月19日
    3
  • 超标量技术

    超标量技术超标量技术 核心 为了最大化指令的吞吐率 必须减少分支指令 ALU 指令 load store 指令的开销 超标量处理器可以是只并行化 EX 段的流水段 可以具体细分为 1 指令流 2 寄存器数据流 3 存储器数据流 指令流 一般用在超标量流水线的前端 即取指段和译码段 流水线机器只有在流水模式下才能达到最大的吞吐率 对于无条件分支指

    2026年3月18日
    2
  • 消息称豆包大模型联合润欣科技、老凤祥开发 AI 眼镜,预计明年初上市

    消息称豆包大模型联合润欣科技、老凤祥开发 AI 眼镜,预计明年初上市

    2026年3月12日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号