欢迎光临
我们一直在努力

labview通过dll函数实现相机调用

今天为了修复相机问题把系统重装了一下,就重新安装了一边labview和工具包,记录一下安装步骤:

大致可以分为这九个步骤,工具包就在labview官网直接搜得到,匹配自己的系统和labview版本就没问题。

Vision development是labview的视觉开发模块:使用视觉开发模块配置相机、自定义图像分析,并生成检测结果,以满足生产和验证测试需求。

Vision IMAQdx这个是继Vision IMAQ工具包后的一个兼容性更高的相机控制包。

Vision acquisition Software:我感觉主要作用是视觉开发和图像处理。

全部安装试用版本完毕,用NI 万能王,破解一下就可以正常使用了(学生可以去下载免费的学生版本)。

回到相机上,目前labview调用相机的主流方式是:

1.通过Vision IMAQdx工具包,可以通过这个包里的函数进行相机的轻松调用。

在上图红线部分就可以写一个简单的相机打开,设置参数,抓取图像,关闭相机的操作,如果外加一个循环,就可以实现连续抓取。

这种控制方式非常简单高效,基本上国内的工业相机大部分都可以支持这个功能。

第二种控制方式就是通过相机SDK开发包,调用底层dll函数,进行相机控制。

这种方法一直都不愿意尝试的原因是太麻烦,而且不太懂C++和每个公司各不相同的相机函数。

很不巧,杭州图谱的E3ISPM相机不支持IMAQdx工具包,开始我以为是因为我电脑驱动有问题,或者我程序哪里出问题了,症状就是只要尝试labview和相机通讯开始就崩溃,重装完系统又仔细检查了一遍程序还是不对,我又怀疑是以为是相机拍图太大导致的,直到我在官网看到:

明确原因就是因为相机不支持IMAQdx工具包后,只能尝试使用调用dll方法解决。

进入正题:

1.什么是dll

DLL(Dynamic Link Library)文件为动态链接库文件,又称"应用程序拓展",是软件文件类型。在Windows中,许多应用程序并不是一个完整的可执行文件,它们被分割成一些相对独立的动态链接库,即DLL文件,放置于系统中。当我们执行某一个程序时,相应的DLL文件就会被调用。

我的理解就是将部分功能,封装起来给其他软件使用,实现软件之间的通讯,比如相机用C++写的程序,但是却可以通过dll调用的方式被labview或使用其他语言编写的软件使用,二次开发嘛。当然,如果相机厂商同时写一个针对labview的开发包就好了!

2.labview中dll的调用

LabVIEW支持通过调用DLL文件的方式与其它编程语言混合使用。比如,在实际的工程项目中,用户可以用C++语言实现软件的运算部分,并把这些功能构建在DLL文件中,然后再使用 LabVIEW编写程序的界面部分,并通过调用编写好的DLL来调用运算部分的功能。

3.具体调用方式

LabVIEW 中是通过Call Library Function Node(CLN)节点来完成DLL文件调用的。

将节点放置在程序框图中,双击会出现它的配置对话框,共有四页。

第一页选择dll路径,选择杭州图谱的dll文件

可以看到图谱相机的函数,下拉列表中有相机打开,相机抓取和相机关闭等函数。一般选择在UI线程中运行和C调用规范。

第二页的参数,就是设置输入和输出参数,因为每一个相机厂商的函数不同,所以网上几乎没有相机调用dll的例程。参照一个openCV对图片进行拼接的例程,图片可以转换为数组,所以这里选择x和y作为图片转化的数组,都输有符号的32位整型,输出作为图像是无符号的8位整型。

第三页和第四页不赘述。

上图是网上一个图片拼接的例程,可以看到通过图片和数组之间的转换实现了dll函数的调用,不过他这个不是调用相机,只是调用一个简单的类似于图像加法的dll文件。

Lab官网有对于dll文件调用的解释,非常全面和详细。

-Center-Resources/Passing-and-Receiving-Pointers-with-C-C-DLLs-from-LabVIEW/ta-p/

还是那个问题,每个相机厂商的二次开发函数不同,加上我对C++的力量一无所知,且调用成功之后,因为我们需求的程序中设计对图像的像素分析,如果频繁使用数组转换不仅对图像分析不利而且会影响程序的运行速度。销售不太懂二次开发,与工程师又没法直接沟通,虽然证明了调用dll的方式是可以行得通的!

雪崩!那为什么不选择简单的方法呢?换相机!

1.整理文件夹的过程中,我发现自己做了很多重复性工作,《vision视觉开发宝典》我就下载了六遍,xd数据到处都是。条理性很重要,安利一下xmind这个思维导图工具,可以宏观的思考和分析问题、备忘录、整理思路等等。

一目了然,哪个环节出了问题,知乎上有比较详细的思维导图使用方法,希望自己可以坚持下去。

2.我在碰到问题的时候,检索不同的词语,得到的结果各不相同。如何用词汇更加贴切的表述自己的问题很关键!另一方面解决问题还是要向专业人士咨询,闭门造车,憋了一下午也没有写出成功运行的程序来,要学会站在巨人的肩膀上!

看了就要关注我,喵呜~

赞(93)
分享到: 更多

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址