LabVIEW使用视觉采集软件从GigE视觉相机进行采集 1
硬件和软件设置
为了从GigE Vision相机获取图像,首先需要确保拥有所有正确的硬件和软件。
硬件
GigE Vision相机:该相机必须符合GigE Vision标准。如果摄像机具有千兆以太网端口,但不兼容GigE Vision,则无法使用Vision Acquisition Software捕获图像。应该在相机的用户手册或市场营销文献中找到GigE Vision徽标。
千兆以太网端口:虽然可以使用分别支持10 MB/s和100 MB/s的以太网和快速以太网端口来获取图像,但这仅适用于非常慢的帧速率和小分辨率。强烈建议使用千兆以太网网络接口控制器(NIC)。
软件
视觉采集软件:将需要视觉采集软件8.2.1或更高版本,它将安装NI-IMAQdx 3.0或更高版本。 NI-IMAQdx是该驱动程序,具有从USB3 Vision,GigE Vision和IEEE 1394摄像机获取图像的功能。
应用程序开发接口(ADE) :可以使用LabVIEW,LabWindows / CVI,Visual Studio 6.0或任何ANSI C编译器来获取图像。
网络配置
正确安装硬件和软件后,还必须配置网络。GigE Vision摄像机可以从DHCP服务器获取IP地址,也可以使用链接本地寻址(LLA)为自己选择一个IP地址。如果使用DHCP服务器将摄像机连接到千兆位以太网,则会自动检测到摄像机。如果摄像机直接连接到计算机(使用常规电缆或交叉电缆),则需要等待一分钟左右,以使DHCP在DHCP请求上超时并使用LLA。 Windows操作系统可能会显示警告,指出网卡只能进行有限的操作。可以忽略此警告。注意:该延迟仅适用于Windows XP和2000,不适用于WindowsVista操作系统。
巨型数据包
通常,网络驱动程序会将大于1500字节的任何数据拆分为多个数据包。但是,GigE Vision标准允许最大9014字节的数据包大小。这些大数据包(也称为巨型数据包)使摄像机可以更有效地在网络上传输数据。通过右键单击网卡并选择属性,可以从Windows设备管理器中启用许多网卡中的巨型数据包。
网络防火墙
当摄像机获取图像时,它将立即将这些数据包流式传输到主机。但是,网络防火墙将不允许数据包到达其目的地,因为防火墙通常会阻止未发起的传入流量。因此,需要禁用防火墙才能从GigE Vision摄像机获取图像。可以从控制面板(开始»控制面板)禁用Windows防火墙。但是,如果网卡带有Intel PRO / 1000芯片组并且正在使用高性能驱动程序,则无需禁用防火墙。由于高性能驱动程序会在传入的GigE Vision数据包到达防火墙之前将其重定向到NI-IMAQdx内核驱动程序,因此防火墙设置不会影响图像的获取。
在MAX中获取图像
Measurement and Automation Explorer(MAX)用于验证已发现相机并可以获取图像。由于NI-IMAQdx驱动程序支持即插即用(PnP),与主机位于同一子网中的所有GigE Vision摄像机应自动出现在设备和接口子树中。 GigE Vision摄像机枚举在NI-IMAQdx子树下,并通过特殊图标标识。如果使用的是NI IMAQdx 4.3.5或更高版本,则GigE Vision摄像机将出现在网络设备子树中。
MAX将在与主机相同的子网上显示任何GigE Vision摄像机。但是,NI-IMAQdx也允许从远程子网中的摄像机获取图像。可以通过调用NI-IMAQdx API中的相应函数来发现远程子网中的摄像机。例如: C函数IMAQdxDiscoverEthernetCamera() 具有用于指定要在其上发现摄像机的子网的参数。
一旦能够在MAX中发现相机,下一步就是从相机中获取图像。从子树中选择摄像机以在主窗口中将其打开。以下是获取标签的各个部分及其说明.
视频模式:此属性仅对IEEE 1394摄像机有效。 GigE Vision相机为灰色。
像素格式:显示可用像素格式的列表。典型格式是Mono8,Mono16和YUV422Packed。
感兴趣区域:指定采集窗口的左右偏移量以及宽度和高度。
超时:设置驱动程序等待超时完成之前返回超时错误的毫秒数。
数据包大小:指定每个数据包中传输的字节数。此数字必须小于网卡允许的最大数据包大小(如果禁用了巨型数据包,则为1500;如果启用了巨型数据包,则为9014)。
正确设置采集参数后,单击捕捉以采集一幅图像,或单击抓取以连续采集图像。
在LabVIEW中获取图像
NI-IMAQdx提供了一个统一的API,可从IEEE 1394,USB3Vision和GigE Vision摄像机获取图像。虽然某些功能特定于一种类型的总线,但是大多数功能和VI均可用于两种类型的摄像机。这使得更多的总线不可知论的发展为图像采集。可以用GigEVision摄像机替换IEEE 1394摄像机,反之亦然,而无需更改代码。
NI-IMAQdx LabVIEW API分为高级VI和低级VI。使用高级VI,可以对简单的捕捉,抓取或序列操作进行编程。使用低级VI可以执行与高级VI相同的任务,但可以更好地控制执行细节。查看LabVIEW附带的示例,以了解如何使用NI-IMAQdx对图像采集进行编程。
上面的例子说明了在LabVIEW中的简单Grab采集。所获取的图像显示在图像指示器中。本示例在缓冲区编号指示器中显示了缓冲区编号。如果while循环的循环速率不高于相机的帧速率,则可能会丢失缓冲区。在这种情况下,在可以处理原始图像之前,复制到内存缓冲区中的图像会被另一个图像覆盖。在大多数机器视觉情况下,重要的是要通知用户是否遗漏了任何帧。
需要说明的是,上述的例程和文档,都是可以下载的,双击即可打开,其中压缩文件是可以采用粘贴复制的方式,拷贝到硬盘上。这不是图片,各位小伙伴看到后尝试一下,这个问题就不用加微信咨询了。有关LabVIEW编程、LabVIEW开发等相关项目,可联系们。