石鑫华视觉论坛

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

[原创] LabVIEW Vision图像处理开发宝典-第三章 功能函数与主程序-第一节 功能函数与模块-1.1 Camera相机模块-1.1.1 打开相机

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

    连续签到: 4 天

    [LV.Master]2000FPS

    发表于 2020-5-26 11:02:30 | 显示全部楼层 |阅读模式 来自:广东省东莞市 电信

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

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

    x

    LabVIEW Vision图像处理开发宝典-第三章 功能函数与主程序-第一节 功能函数与模块-1.1 Camera相机模块-1.1.1 打开相机

    1.1.1 打开相机

    图4 打开相机(真)

    图4 打开相机(真)
    4 打开相机(真)

    图5 打开相机(假)

    图5 打开相机(假)
    5 打开相机(假)
    图4、图5所示,为打开相机的状态机。在While外面只添加输入控件相机操作、Image In、错误输入几个控件。相机操作属于状态机命令,需要从调用函数中指定具体的命令,以执行不同的状态机,如打开相机、采集图像、关闭相机等。图像输入,则指定了采集图像时图像缓存的内存空间。一般来讲,这个参数可以在主程序中引入。主程序可以根据相机的类型(黑白、彩色)分配不同的内存空间,如GrayscaleU8、RGBU32等。当然如果程序使用的相机已经固定好了,可以将图像输入去掉,这时在打开相机时,会检查图像输入缓存是否有效,如果无效,则会自动创建一个默认的8位灰度图像缓存空间,如图4所示,上面一个条件结构,图像缓存无效时,根据VI名创建一个图像缓存空间。如果将图像输入去掉,那么后面的非法句柄引用判断以及条件结构也可以一起去掉,这样就成为直接创建新的图像缓存,这样至少要少判断几项内容,可以提高程序的执行效率。虽然这个提高不会很明显,但是大型程序的效率提高,就是由这些细小的内容改善一点一滴积累的。
    同理,相机引用也使用了这样的道理。但是相机引用在这里,并没有接入输入控件,因为我们使用的是状态机,这里就没有使用输入控件,而是在打开相机的状态机中,通过枚举相机IMAQdx Enumerate Cameras VI、索引数组、按名称解除捆绑、打开相机IMAQdxOpen Camera VI等函数,直接打开相机获得相机引用。如果编程人员比较了解,可以直接在打开相机中输入接口名称的字符串,NI相机名称字符串,一般是以cam1、cam2、cam3等方式调用的。相机名称,可以在MAX中查看得到。当然,也可以通过枚举索引的方式获得,这样的话,就需要注意当系统中有多个相机时,需要打比赛索引哪个相机。同样,相机序号也可以在MAX中看到。
    由上面这些理念可以修改打开相机状态机,如下图所示:

    图6 修改简化打开相机

    图6 修改简化打开相机
    6 修改简化打开相机
    通过以上的修改,打开相机就变得简洁了。在图6所示的简化打开相机中,需要注意IMAQ Create创建的内存,其名称不能与其它VI中的创建的内存名一样,如果一样,则会与其它VI中的图像共用一块内存区域,有可能图像会被彼此覆盖;名称可以直接使用常量,这样会虽然有可能会重复,但是比属性读取要快速;另外打开相机的Session In引用输入,可以使用引用控件,也可以使用字符串常量。使用字符串常量,则由用户直接指定,使用引用,则是枚举量,会枚举系统中的已有的资源,跟VISA打开串口类似。
    条件结构中,通常需要指定一个默认分支,在这里,没有设置其它的空分支,因此直接使用了打开相机当作默认分支。
    状态机的连续控制由WHILE循环来控制,因为一般的状态都是不会连续控制的,因此为了方便编程,将WHILE的控制端设置成真时继续,这样当不需要继续时,只需要使用默认值假就可以,只有需要继续循环的,才会设置成真。如果继续循环,下一循环状态,则WHILE右上角的下一循环指令来指定,它会将指令传递给WHILE中的移位寄存器,而下次循环时会读取寄存器中的值,从而决定条件结构执行哪个分支,以达到不同的状态控制的目的。同理,如图像引用、相机引用等,也使用了移位寄存器。移位寄存器在当前VI加载在内存中时,其中的值都是不会丢失的,可以有效的传递数据。


    相关帖子

    回复

    使用道具 举报

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

    本版积分规则

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

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

    GMT+8, 2024-11-20 23:36

    Powered by Discuz! X3.4

    © 2001-2024 Discuz! Team.

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