- 如何在LabView中使用MVDAlgotihrmSDK进行视觉开发
- LabVIEW开发者请看过来,教你怎么在LabVIEW中 使用VM 4.2 应用
- 悉灵杯”课题研究-LabVIEW集成及示例代码开发
- 工业相机labview例程显示方案
- LabVIEW基于算法平台C#版本SDK进行二次开发
1、工业相机labview例程显示模块介绍
我司现有labview例程采用的是将Pdata数据转换成picture数据显示的方式,支持mono格式和RGB格式,若像素格式不是上述两种格式,则转换成这两种格式,代码如图1:
图1 例程中显示模块
该种方式优缺点如下表:
优点 |
不需要视觉开发模块也能显示 |
使用picture格式处理模块 |
|
缺点 |
显示效率慢 |
无法使用image格式处理图像(更常用) |
显示窗口属性设置少 |
我们接触的客户大多是需要用视觉模块的,处理图像的方式大多是image格式,而且对效率有一定的要求,那么picture格式的缺点就非常突出,这就使我们必须输出image格式;
我总结了两种输出image格式的方法供大家参考,下面将分别介绍一下这两种方式:
1、 picture转image:
该种方式是保持原先的代码不变,在此基础上增加代码,现将picture转成2D数组,然后再将2D数组转成image格式;该种方式能实现image控件显示图像,多了显示窗口的一些功能操作(如图2),但是显示效率并没有增加,耗时模块没有减少反而有所增加;
图2 image显示窗口
Picture转image格式的代码如下:
图3 MONO/RGB像素格式,picture转image代码
上述代码涉及到的控件介绍如下(左图为控件介绍,右图为控件路径):
1) 2维图像数组转成image格式
图4 2维图像数组转成image格式代码
2) Picture数据转成图像数组
图5 Picture数据转成图像数组代码
3) 为数据开辟一个缓存
图6 为数据开辟一个缓存代码
4) 释放开辟的缓存
图7 释放开辟的缓存代码
5) 2维图像数据转彩色image格式
图8 2维图像数据转彩色image格式代码
2、Pdata转image
该种方式删除了例程中picture显示的方案,直接操作pdata数据转成image格式,而我们pdata数据本身就是数组,只需简单的转化,就能直接转成image,这样就省略了大量的中间转换过程,从而大大的提高了效率。具体代码如9:
图9 Pdata转image代码
Mono格式较为简单,直接改变数组维数,将宽高信息绑入,一维数组转化成二维数组后,直接ArrayToImage即可;
彩色格式就较为复杂了,其中方法1是将RGB格式的pdata数据中的RGB分量分别提取出来,转化成image格式,然后再整合成RGB格式的image格式;而方法2较方法1更为简便,是将RGB8(每个字节一个数据,第一个数据是R分量的值,第二个数据是G分量的值,第三个数据是B分量的值,第4个数据是R分量的值…依次排列),转成RGB24(每24位一个数据,该数据的高8位为R分量的值,中间8位为G分量的值,低8位为B分量的值),然后绑如宽高转换成2维数组,再直接转成彩色image格式即可;
彩色格式的两种方法各有优劣,优缺点总结如下表:
方法1 |
优点 |
有R\G\B单通道分量的image格式,后续做彩色格式(HSV等)转换很方便 |
|
缺点 |
转成image格式的效率低 |
占用缓存大 |
|
方法2 |
优点 |
转成image格式的效率高 |
占用缓存小 |
缺点 |
后续做彩色格式(HSV等)转换不方便,需要另加控件提取R\G\B单通道分量的image格式 |
|
从picture格式和image格式的特点分析来看,image格式的应用范围更广,效率更高,主要适用于labview的视觉模块,从我们产品的角度出发,使用image格式的客户应该会更多,所以掌握如何转成image格式的方法还是很有必要的;在输出image格式的方法中,我更推荐方法2,因为它更加高效,而效率是我们相机和SDK的硬性标准之一,希望本篇文档能对大家有所帮助,谢谢
请问一下楼主是否有用过labview调用过MyCameraPatch.dll中的startRecord函数,我这边一直调用不成功,显示参数错误的x80000004错误,实在不知道问题出在哪里,还望不吝赐教,谢谢