工业相机labview例程显示方案
我们使用labview开发工业时,是否会遇到显示效率不够、显示格式转换麻烦等问题呢?本文章主要介绍使用labview开发工业相机时的集中不同的显示方案,他们各有优缺点,分别适用于不同的应用场景

1、工业相机labview例程显示模块介绍

    我司现有labview例程采用的是将Pdata数据转换成picture数据显示的方式,支持mono格式和RGB格式,若像素格式不是上述两种格式,则转换成这两种格式,代码如图1:

  

    

图1 例程中显示模块

    该种方式优缺点如下表:

优点

不需要视觉开发模块也能显示

使用picture格式处理模块


缺点

显示效率慢

无法使用image格式处理图像(更常用)

显示窗口属性设置少

    我们接触的客户大多是需要用视觉模块的,处理图像的方式大多是image格式,而且对效率有一定的要求,那么picture格式的缺点就非常突出,这就使我们必须输出image格式;

2、输出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格式


3、总结

    从picture格式和image格式的特点分析来看,image格式的应用范围更广,效率更高,主要适用于labview的视觉模块,从我们产品的角度出发,使用image格式的客户应该会更多,所以掌握如何转成image格式的方法还是很有必要的;在输出image格式的方法中,我更推荐方法2,因为它更加高效,而效率是我们相机和SDK的硬性标准之一,希望本篇文档能对大家有所帮助,谢谢

版权声明:本文为V社区用户原创内容,转载时必须标注文章的来源(V社区),文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:v-club@hikrobotics.com 进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
上一篇

线阵色散现象的解决方案及原因

下一篇

网口线扫相机帧+行触发操作步骤

评论请先登录 登录
全部评论 4
LabVIEW有强大的NI视觉驱动和视觉算法库,之所以关注VM平台,唯一目的是看一下有没有值得“拿来”新的好用的深度学习视觉算法成果可供二次开发调用!我想这也是大多LabVIEW开发者来此目的,感谢!
2022-10-08 23:52:11 未知地区
回复

请问一下楼主是否有用过labview调用过MyCameraPatch.dll中的startRecord函数,我这边一直调用不成功,显示参数错误的x80000004错误,实在不知道问题出在哪里,还望不吝赐教,谢谢

2022-04-01 09:37:06 未知地区
回复

这是RGB8转image的方式,有没有bayerGR8的介绍呢?

另外,感觉图片的清晰度还是低了点,要很费力地猜测

2022-03-26 09:26:57 未知地区
回复
文章看不全?
2022-02-25 08:58:15 未知地区
回复
  • 1
Lv.0
0
关注
28
粉丝
5
创作
41
获赞
所属专题
  • 如何在LabView中使用MVDAlgotihrmSDK进行视觉开发
  • LabVIEW开发者请看过来,教你怎么在LabVIEW中 使用VM 4.2 应用
  • 悉灵杯”课题研究-LabVIEW集成及示例代码开发
  • 工业相机labview例程显示方案
  • LabVIEW基于算法平台C#版本SDK进行二次开发
相关阅读
  • [共享学习]VM之角度纠正问题
    2024-03-07 浏览 0
  • 机器视觉菜鸟指南
    2024-02-29 浏览 0
  • 基于C++OpenCV实现VisionMaster中的“直线边缘缺陷检测”
    2024-03-04 浏览 0

请升级浏览器版本

您正在使用的浏览器版本过低,请升级最新版本以获得更好的体验。

推荐使用以下浏览器