0

    [LabVIEW]--通过LabVIEW打开计算机摄像头、图像显示、拍照。

    2023.07.20 | admin | 135次围观

    【写在前面:

    不是我高冷啊,我不知道为啥文章里看不到评论也没法回复,有小伙伴给我私信,隔了一年才给我推送。。。】

    编写LabVIEW打开摄像头,采集图像的程序

    打开图像采集函数子选板,选择NI-IMAQ,使用其中的子VI:

    IMAQ Create:

    创建图像,此VI在Vision Utilities的Image Management 函数子选板中,主要参数有:

    Border Size(边界大小):许多图像处理函数进行像素处理是要参考相邻像素的值,但是一幅图像边界上的像素并非四周都有相邻像素,这就要给图像加一个边界。这里指定了边界的像素数,而像素的值取决于使用的图像处理函数。

    Image Name(图像名):任意字符串。

    Image Type(图像类型):因为采集彩色图像,选择U32。

    New Image(新图像):输出所建图像的引用句柄。

    IMAQdx Open Camera VI:

    打开相机,查询摄像头的功能,加载摄像头的配置文件,并能创建一个相机。完成后调用IMAQdx Close Camera VI。

    IMAQdx Close Camera VI:

    停止图像获取,释放获取图像所占用的资源并关闭相机。

    IMAQdx Grab VI:

    获取输出图像的当前帧。在调用IMAQdx Configure Grab VI之后才调用此VI。如果图像类型与摄像头的视频格式不匹配,该VI将其转换到一个合适的图像类型格式。

    IMAQdx Configure Grab VI:

    配置和开始采集图像。调用IMAQdx Grab VI在缓冲区高速循环采集图像并复制图像。若在调用IMAQdx Open Camera VI之前调用此VI,则IMAQdx Configure Grab VI默认情况下使用cam0。调用IMAQdx Unconfigure Acquisition VI取消获取图像的配置。

    IMAQdx Snap VI:

    配置,启动,获取和取消配置单元采集。在便于编程的应用场合中使用低速或单捕获是必不可少的部分。如果你调用这个VI之前调用IMAQdx Open Camera VI,IMAQdx Snap VI默认情况下,使用cam0。如果图像类型与摄像头的视频格式不匹配,该VI将其转换到一个合适的图像类型格式。

    IMAQ Dispose VI:

    删除一个图像并释放它在内存中占据的空间。为释放分配给IMAQ Create VI的内存,在应用程序中创建的每个映像都需要这个VI。仅在应用程序中不再需要映像时执行IMAQ Dispose。既可以为每次调用IMAQ Create使用IMAQ Dispose,也可以为使用IMAQ Create创建的所有图像使用一次。

    使用while循环结构使图像采集程序连续运行,只有当出错或按下停止按钮时,循环停止,采集程序终止,关闭摄像头,清除图像缓存。

    while循环结构也叫条件循环结构,是一种无限循环结构,只要条件满足,它就一直循环运行下去。

    程序框图:

    前面板:

    cam 0默认为计算机自带摄像头。

    拍照

    在前面板上增加一个拍照按钮,在按下拍照按钮时无法获取摄像头数据 请检查是否已经打开摄像头权限,负责采集图像的程序启动,拍下一张照片,并显示到前面板,拍照功能通过Case结构实现,按钮在默认情况下,是0,按下时为1,松开又恢复为0.当为1时图像采集程序启动拍照,即按一次按钮拍一张照片。

    LabVIEW的条件结构相当于C语言中的

    if(表达式){……}

    else{……}

    和switch结构:

    switch(表达式)

    {case值1:语句1break;

    case值2:语句2break;

    default:语句nbreak;},用于实现分支选择程序逻辑。

    该设计有两个Case,即1和0,当输入值为1(真)时,即按下拍照按钮,拍照程序运行,否则无法获取摄像头数据 请检查是否已经打开摄像头权限,不运行拍照程序。

    版权声明

    本文仅代表作者观点。
    本文系作者授权发表,未经许可,不得转载。

    发表评论