NIVision-LabVIEW在灰度图上画圆

问题来源

在csdn上看到的这样一个问题,好像也没个正经答案,都用chatGPT回答,挺没劲的。不说提供个vi源代码,至少也来张截图嘛。我想着问题也不难,就自己动动手吧。

代码展示1

1、首先使用imaq ArrayToImage.vi创建了一个500*500分辨率、像素值全为0的全白的灰度图;

2、然后定义画圆属性值,圆心坐标XY和圆半径Radius。我们主要是使用Imaq Draw.vi来画圆;

**DrawMode:**Frame参数仅画边缘,Paint参数则会填充;

**Shape to Draw:**Oval参数是画圆的意思,我们也可以选择画直线Line和矩形Rectangle;

**Pixel Color:**灰度图中,0-255,从黑变白;0就是最黑。

**Coordinates:**在画圆的功能中,该参数的含义就是圆的外切四边形的左上角和右下角坐标,数组索引0、1代表左上角点XY坐标值,数组索引2、3代表右下角点XY坐标值。那么我们知道圆心坐标和半径,通过简单的计算就很容易得到这个数组。

3、点击"画圆"按钮,我们就能在image控件上得到我们想要的圆。

4、修改画圆属性值,并点击画圆按钮,我们会继续生成其他的圆形图案。**唯一的缺点是,画圆不可逆,我们没法清除已经画上去的圆,除非重新运行vi。**所以我想推荐使用另外一个函数Imaq Overlay Oval.vi

代码展示2

1、我们使用Imaq Overlay Oval.vi来画圆;

Bounding Rectangle:和上面的Coordinates是一个含义,不过上面的是数组,这里的是簇。

Draw Mode:Frame参数画边缘,Fill参数填充;

Color:可使用颜色选择框选择自己想要的图形颜色;

2、我们是用了Imaq Clear Overlay.vi在每次画圆之前可以把之前的Overlay涂层清除。

3、如果我们想保存现在的涂层,可以使用Imaq Merge Overlay.vi,这样就是新建的Overlay与源图融合在一起了。

4、那现在我们再考虑一个问题,我们能不能直接在控件上用ROI工具画圆,所画就是所得,不需要定义圆心和半径。当然,是可行的。

代码展示3

通过image控件上ROI来定义画圆形的区域,使用矩形工具、圆形工具画ROI都可以。Get Last Event方法节点判断Type=2也就是为Draw时才会执行Imaq Overlay Oval,并把坐标点转换成包含4个元素的簇,作为参数输入。

Get Last Event的方法节点创建步骤见下图:

文末总结

一些思路分享,都是些很简单的函数调用,希望能帮助到需要的人吧。

相关推荐
LabVIEW开发11 小时前
LabVIEW远程调试实战:从“被迫接受”到“高效真香”
labview
猎头南楼19 小时前
新型电力系统下的储能控制仿真:从策略研发到工程落地的关键技术挑战
labview
fanchenxinok1 天前
基于图莫斯的CAN UDS诊断上位机-LabVIEW版本(十七):TOOMOSS_SID19_ReadDTCInformation.vi — 读取DTC信息
labview·dtc·sid19
神电测控1 天前
新品发布:32通道50MS/s同步并行14位采集模块PG-FMC9249(支持任意FPGA/ZYNQ,兼容LabVIEW FPGA软件开发)
fpga开发·labview·ni·神电测控·王电令·ad9249·32通道
电气_空空2 天前
基于 LABVIEW 的虚拟仪器温度检测系统的设计
labview
fanchenxinok2 天前
基于图莫斯的CAN UDS升级上位机-LabVIEW版本(十五):总结篇
labview·uds升级·uds刷写
fanchenxinok2 天前
基于图莫斯的CAN UDS升级上位机-LabVIEW版本(十六):从刷写到诊断的功能扩展
labview·诊断·uds
fanchenxinok3 天前
基于图莫斯的CAN UDS升级上位机-LabVIEW版本(十四):打包与安装应用程序
labview·安装·升级上位机·uds刷写
fanchenxinok4 天前
基于图莫斯的CAN UDS升级上位机-LabVIEW版本(十):TOOMOSS_SID31_RoutineControl.vi — 例程控制
can·labview·uds升级·升级上位机·uds刷写
kingwebo'sZone4 天前
我写的第一个labview 展示页面程序
labview