LabVIEW仪表盘识别(实战篇—6)

LabVIEW仪表盘识别(实战篇—6),第1张

机器视觉系统中常需要从各类仪表的显示屏图像中提取其读数。这些仪表的显示屏可以分为模拟指针显示屏、LCD显示屏和LED显示屏等。

观察模拟仪表可以发现,它们的刻度被标记在一个由初始值和满量程值限定的圆弧范围内,仪表的指针基于圆弧的圆心旋转以指示当前值。由此不难想到先使用两条标记初始值和满量程值的线段,加上一个标记圆心位置的点来校准仪表,然后就可以检测指针的位置,并通过该位置占满量程的比例来确定当前读数。三点法是另一种校准此类仪表的方法。它在仪表初始值、满量程值位置上分别选择一点,再选择指针旋转的圆心,这样圆心点即可与其他两点分别构成线段来实现仪表校准。

指针型显示屏常用于速度表、流量表、电压和电流表等,如下所示:

仪表读取功能还能从具有LCD/LED显示屏的仪表中检测包含单个或多个七段数码管类型数字的区域,并读取包括小数点等分隔符的数值。

LCD/LED显示屏则常采用7段数码管来显示数据,如下所示:

Nl Vision提供了读取上述几种仪表显示的函数,它们对复杂的算法进行了封装,位于LabVIEW的视觉与运动→Machine Vision→Instrument Readers函数选板中,如下图所示:

其中IMAQ Get Meter、IMAQ Get Meter 2和IMAQ ReadMeter用于读取模拟仪表的读数,IMAQ Get LCD ROI、IMAQ Read LCD和IMAQRead Single Digit用于读取使用7段数码管类型的LCD/LED仪表的读数。

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

基于NI Vision的仪表读取函数可快速构建需要读取仪表值的机器视觉系统。通过一个仪表读取函数读取油表显示值的实例,了解模拟仪表识别的应用。

整个过程可分为学习和读数两个阶段。在学习阶段,程序先使用两个IMAQ Convert Line to ROI函数指定了仪表的初始值和满量程值位置。随后IMAQ Group ROI对两个线段ROI进行组合,作为仪表学习函数IMAQ Get Meter的输入。学习过程完成后,会输出仪表指针的旋转中心位置和一个数组。其中数组元素代表仪表初始值和满量程值之间一条沿着刻度的弧线上各点的位置,这些点将用于在读数阶段计算仪表的读数。

读数阶段基于学习阶段的输出来完成,IMAQ Read Meter可以通过检测仪表指针的位置来确定当前读数所在位置占满量程的百分比。而基于该百分比和满量程值,就可以计算仪表的真实读数。

程序设计如下所示:

程序运行结果中,除了显示读数值,还在图像中显示了ROI、学习过程所返回数组中的各点以及指针指向的位置,效果如下所示:

IMAQ Get LCDROI、IMAQ Read LCD可检测包含多个七段数码管类型数字的区域,并读取包括小数点等分隔符在内的数值。IMAQ Read Single Digit则用于读取单个七段数码管类型的数值。与读取模拟仪表数值的过程类似,读取LCD仪表数值的过程也包括学习和读数两个阶段。

学习阶段需要基于所有数字的七段数码管全部打开时的图像(全部为数字8)来定位各个数字所在的矩形范围。读数阶段则通过分析7段数码管数字各段的线灰度分布以确定读数结果。

下图显示了仪表读取函数基于线灰度分布识别LCD/LED数码管显示的原理,其中数字为各段数码管的索引。

上图(a)显示了背景为白色且七段数码管全部打开时的情况,其中数字为各段数码管的索引。假定已在学习阶段从图像中确定了各个数字所在的矩形位置,就可以在水平和竖直方向上设置与各段数码管交叉的线段型ROI,用于后续分析。

由于数码管关闭时,其图像灰度与背景灰度接近,因此线ROI灰度曲线上的像素值分布较为集中。而数码管打开时,因数码段图像灰度与背景反差较大,线ROI灰度曲线上的像素值分布较为分散,如上图(b)所示。

标准差可用来衡量一组数据的分散程度,因此通过计算线ROI上像素灰度的标准差,并为其设置阈值即可判断数码管的开闭。综合考虑7个数码管的各种开闭组合,就能得到其显示的数值。而重复该过程就能读取LCD显示屏中的多个数字。

由于LCD/LED仪表读取函数基于线灰度分布来判断数码管的开闭,因此图像的亮度漂移(Light Drift)、对比度、噪声和分辨率将直接影响其读数的准确性。

通过一个读取LCD仪表显示值的实例,了解LCD/LED显示屏识别的应用方法,程序设计思路如下所示:

程序总体上可分为使用IMAQ Get LCDROI的学习和使用IMAQ Read LCD的读数两大部分。

程序开始先读入仪表所有数字均为8时的图像LCD0jpg,并调用IMAQ Get LCD ROI,从指定的矩形ROI中搜索各个7段数码管数字所在的矩形位置;

一旦获得各个数字位置所在的范围,程序就读取待测图像LCD1jpg,调用IMAQ Read LCD分析各个数字所在的范围内7个数码管的显示情况,以判断最终读数;

仪表学习和读取过程均使用线灰度分布的标准差阈值Threshold来判断数码管的开闭,而且IMAQ Read LCD还支持数字的+/-符号和小数点的读取;

IMAQ Read LCD以浮点数、字符串以及元素为图形的数组返回所读取到的值,其中字符串中的每个字符用小数点进行分割。

程序实现如下所示:

程序运行效果如下所示:

仪表和条码读取是机器视觉系统的常用功能。常见的各类仪表可按显示方式分为模拟指针显示屏、LCD显示屏和LED显示屏等几大类。

机器视觉系统可以使用双线法或三点法,对模拟显示屏类型的仪表进行校准和读取。对七段数码管类型显示数字的LCD/LED仪表的读取,可以通过分析数字所在区域的线灰度分布来实现。数码管关闭时,灰度曲线上的像素值分布较为集中,反之则分布较为分散。在读取仪表过程中,应考虑图像的亮度漂移、对比度、噪声和分辨率对读数准确性的影响。

有的扫描q是根据键盘的大小写切换来确定扫描出来的是大小或小字,即键盘为大写状态,输出为大小,键盘为小写状态,输出就是小写; 有的扫描q是通过扫描q本身设置输出为大写或小写(需要用到扫描q身带的设置手册),如果设置为大写了,那么不管制作条码时是输入大小还是小写,输出全是大写,

这是生成所需要的字符串数组的程序,你把整个数组或者逐个字符串按照打印机通信协议发过去就行了。你没准确提供打印机驱动函数或命令格式,别人只能帮你这些了。

别只坐等了,你给的是型号吗?你自己搜了吗?给个现成的链接多好啊。

1.首先需要使用文件I/O来读取电子表格文件的功能,将TXT文件中的数据读入一个二维数组,共两列,第一列是x轴数据,第二列是y轴数据。

2.第二个索引数组函数的两个索引末端的第一个也连接到for循环I(repeatterminal),但是第二个末端连接到常数1,然后两个函数的输出连接到bundle的两个末端。

3.这里的for循环还需要访问一个N(循环终端)。首先,将输入的二维数组连接到数组大小函数。

4.然后将输出终端连接到索引数组。此时,只有一个索引端连接到常数0,输出端连接到N。

打开LabVIEW软件,单击新建“VI”,

在d出的“前面板”窗口中单击鼠标右键,添加一个“按钮”控件,

在“按钮”控件上单击鼠标右键,在d出的下拉菜单中选择“机械动作”选项,会d出六个机械动作选项,第一排为转换型,第二排为触发型,如下图

第一排第一个机械动作选项为“单击时转换”,即为按钮按下时立即改变状态,当再次按下按钮时,状态返回

第一排第二个机械动作选项为“释放时转换”,即为按钮按下后松手释放时才改变状态,当再次按下按钮释放时,状态再返回

第一排第三个机械动作选项为“保持转换直到释放”,即为按钮按下后立即改变状态,当按钮释放时,状态立即返回

第二排第一个机械动作选项为“单击时触发”,即为按钮按下时立即触发动作,直到动作完成

第二排第二个机械动作选项为“释放时触发”,即为按钮按下后松手释放时才触发动作,直到动作完成

第二排第三个机械动作选项为“保持触发直到释放”,即为按钮按下后立即触发动作,当按钮释放时,动作立即停止就可以了

这个很简单,直接有创建文件夹的VI,路径由指定的基路径和格式化的日期时间字符串组成。 注意,文件夹和文件名中不允许有正反斜线冒号等保留字符。 存文件也类似,“创建文件”后用“写入二进制文件”函数保存。完成后关闭文件。平时的标签制作过程中,很多产品生产序号或者是编号什么的都会用到流水号,那么如果想要二进制或者十六进制的流水号,那么这种流水号怎么实现呢,接下来我们就来看一下在条码软件中如何制作?

首先,我们先打开条码软件,新建标签纸,纸张尺寸我们暂时默认A4纸,布局方面设置为多行多列。下面我们用不同的方法来生成流水号。

一、十进制生成流水号

点击左侧工具栏中的“A”图标,先绘制普通文本,然后双击普通文本,使用序列生成的方法添加流水号内容:

添加内容时,可以看到序列生成中的字符集默认是10位数,那么自动生成的流水号数据也是我们平时见到最多的十进制流水号的样式:

二、二进制生成流水号 二进制是逢2进位的进位制。0、1是基本算符,它只使用0、1两个数字符号,在中琅条码软件中只需要在添加内容时,将序列生成页面中的字符集由“0-9”修改为“01”,然后直接点击“编辑-确定”即可:

下面我们看下生成效果:

三、十六进制流水号 十六进制在数学中是一种逢16进1的进位制。一般用数字0到9和字母A到F表示,其中:A~F表示10~15,这些称作十六进制数字。

在条码软件中 *** 作时,同样是使用序列生成的方法添加内容,字符集可将软件默认的“0-9”修改为“0-9A-F”即可。

十六进制数据生成效果为:

采用GigE Vision协议的千兆网相机或采用USB3Vision协议的USB30相机,可以在NI的Labview软件直接作为默认设备调用。I/O在属性中即可获取。

工业相机按照芯片类型可以分为CCD相机、cmos相机;按照传感器的结构特性可以分为线阵相机、面阵相机;按照扫描方式可以分为隔行扫描相机、逐行扫描相机;按照分辨率大小可以分为普通分辨率相机、高分辨率相机;按照输出信号方式可以分为模拟相机、数字相机;按照输出色彩可以分为单色(黑白)相机、彩色相机;按照输出信号速度可以分为普通速度相机、高速相机;按照响应频率范围可以分为可见光(普通)相机、红外相机、紫外相机等。

Regem Marr 研祥金码的R-3000系列快速、全方位的条码捕捉读取。内置丰富的IO接口,支持复杂现场需求。集成多组可控光源,实现光源分路独立控制,响应你的柔性化生产需求。多核并行处理,提高整体读取速度。即插即用快速安装,一步到位轻松设定。不仅仅是智能读码器,更是业务好帮手,生产统计,计件统计功能强大超乎想象。

通过官方网站(>

以上就是关于LabVIEW仪表盘识别(实战篇—6)全部的内容,包括:LabVIEW仪表盘识别(实战篇—6)、求助labview *** 作usb条码扫描q、labview7.0条码连打问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9527622.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-29
下一篇2023-04-29

发表评论

登录后才能评论

评论列表(0条)

    保存