石鑫华视觉 手机微信QQ:13450001061

图像编程

LabVIEW Vision菜鸡互啄:使用生产者消费者保存图像

文章来源:石鑫华视觉网时间:2024-03-26 08:25:35 点击:162

LabVIEW Vision菜鸡互啄:使用生产者消费者保存图像

在前一视频“LabVIEW Vision生产者消费者连续采集处理图像”的基础上,创建手动保存图像的事件响应。点击保存图像按钮,响应按钮值改变事件,使用写文件函数进行保存图像。写函数是一个多态VI,可以选择jpg、png、bmp、tif等各种格式的文件。

LabVIEW Vision生产者消费者连续处理图像视频号扫码观看

初始化消费者

初始化过程中,创建必要的图像缓存,这里因为只是做简单的彩色图像变成灰度图像,所以创建了两个缓存,一个是用于彩色图像的,一个是用于灰度图像的。图像缓存可以考虑引用状态机。

打开相机生产者和消费者

相机相关的功能,也可以考虑使用状态机,会更方便一些。

采集单帧生产者和消费者

单帧采集功能,每点击一次布尔按钮,则只采集一幅图像。这里的单帧,不同于Snap快照,仍然使用的是Grab或Get Image函数。

连续采集生产者消费者

连续采集则添加了一个While循环以实现连续执行。While循环是否停止,则由连续采集布尔按钮来确认。连续采集布尔按钮的机械动作设置成释放时转换。转换的新值为真时,则连续采集入队列去执行连续采集的消费者。而转换的新值为假时,则不执行连续采集的过程。

处理图像生产者消费者

处理图像功能,只是简单的使用了彩色图像变成灰度图像。可以在这里实现更多更复杂的功能。本示例未实现连续的采集图像-处理图像的过程。在后续的教程中再介绍。

自动运行生产者消费者-正常采集图像时

自动运行生产者消费者-相机超时等出错时

自动运行的过程和连续采集的过程非常类似,在连续采集的基础上来实现的。直接先复制连续采集相关的生产者和消费者,然后做修改即可。自动运行时,需要做采集结果做一下判断,如果正常采集到了图像,那就做后续的图像处理。如果没有正常采集图像,例如相机打开了触发功能后输出了超时错误,或者是运行时相机掉线等出错,这时没有正常采集到图像时,是应该做一个基础判断的,出错后不应该再做图像处理的过程了。

保存图像生产者消费者-取消保存时

保存图像生产者消费者-保存图像-默认jpg格式

保存图像生产者消费者-保存图像-bmp格式

保存图像生产者消费者-保存图像-tif格式

保存图像生产者消费者-保存图像-png格式

保存图像生产者消费者-保存图像-png格式并保存视觉信息

保存图像效果

停止生产者消费者

停止生产者消费者的实现,没有使用元素入队列,而是直接使用释放队列后生成的错误来实现的。当然,也可以在停止事件中添加元素入队列,将停止时需要释放的硬件资源、软件资源等放到相应的消费者中来处理,这时需要注意LabVIEW并行运行时的竞态关系,在释放队列前,最好添加一个延时以保证停止消费者能正常执行而不是先执行错误条件结构。


首页
84162741QQ
联系