石鑫华视觉论坛

 找回密码
 注册会员
查看: 143|回复: 0

[原创] LabVIEW Vision菜鸡互啄:使用生产者消费者采集处理图像

[复制链接]
  • TA的每日心情
    擦汗
    13 小时前
  • 签到天数: 3382 天

    连续签到: 4 天

    [LV.Master]2000FPS

     楼主| 发表于 2024-3-22 10:30:33 | 显示全部楼层 |阅读模式 来自:广东省东莞市 电信

    注册登陆后可查看附件和大图,以及购买相关内容

    您需要 登录 才可以下载或查看,没有账号?注册会员

    x
    LabVIEW Vision菜鸡互啄:使用生产者消费者采集处理图像
    在事件结构的基础上,增加队列创建生产者消费者结构模式。或者直接使用生产者消费者模板来创建相应的VI。生产者使用事件来响应,没有使用数据响应。事件可以简单处理打开相机、采集单帧、连续采集、处理图像、退出程序等过程。
    image1.png
    视频号扫码观看
    image2.png
    初始化消费者
    初始化过程中,创建必要的图像缓存,这里因为只是做简单的彩色图像变成灰度图像,所以创建了两个缓存,一个是用于彩色图像的,一个是用于灰度图像的。图像缓存可以考虑引用状态机。
    image3.png
    打开相机生产者和消费者
    相机相关的功能,也可以考虑使用状态机,会更方便一些。
    image4.png
    采集单帧生产者和消费者
    单帧采集功能,每点击一次布尔按钮,则只采集一幅图像。这里的单帧,不同于Snap快照,仍然使用的是GrabGet Image函数。
    image5.png
    连续采集生产者消费者
    连续采集则添加了一个While循环以实现连续执行。While循环是否停止,则由连续采集布尔按钮来确认。连续采集布尔按钮的机械动作设置成释放时转换。转换的新值为真时,则连续采集入队列去执行连续采集的消费者。而转换的新值为假时,则不执行连续采集的过程。
    image6.png
    处理图像生产者消费者
    处理图像功能,只是简单的使用了彩色图像变成灰度图像。可以在这里实现更多更复杂的功能。本示例未实现连续的采集图像-处理图像的过程。在后续的教程中再介绍。
    image7.png
    停止生产者消费者
    停止生产者消费者的实现,没有使用元素入队列,而是直接使用释放队列后生成的错误来实现的。当然,也可以在停止事件中添加元素入队列,将停止时需要释放的硬件资源、软件资源等放到相应的消费者中来处理,这时需要注意LabVIEW并行运行时的竞态关系,在释放队列前,最好添加一个延时以保证停止消费者能正常执行而不是先执行错误条件结构。
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册会员

    本版积分规则

    LabVIEW HALCON图像处理入门教程(第二版)
    石鑫华机器视觉与LabVIEW Vision图像处理PDF+视频教程11种全套
    《LabVIEW Vision函数实例详解》教程-NI Vision所有函数使用方法介绍,基于NI VISION2020,兼容VDM21/22/23/24

    QQ|石鑫华视觉论坛 |网站地图

    GMT+8, 2024-11-20 21:25

    Powered by Discuz! X3.4

    © 2001-2024 Discuz! Team.

    快速回复 返回顶部 返回列表