工业相机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 进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
上一篇

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

下一篇

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

评论请先登录 登录
全部评论 3

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

2022-04-01 09:37:06
回复
栾志明 作者 回复 Vuser_223251 :

80000004是参数错误,估计是参数传递错了,这个回复暂时没办法加截图或者附件,建议参考下C例程中的Record这个接口使用的时候,参数传递方式,或者可以留下你这边的微信或邮箱,我们后面沟通

2022-04-08 11:30:26

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

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

2022-03-26 09:26:57
回复
栾志明 作者 回复 Vuser_144208 :

Bayer数据转image暂时没有文档,可以参考下黑白转image的,或者可以转成RGB后再操作;清晰度这个,上传的时候被压缩了🙃

2022-03-28 10:42:19
文章看不全?
2022-02-25 08:58:15
回复
V版主_Yiva 回复 Vuser_744970 :

@Vuser_744970,您好,文章都可以看全的哈,如果有问题可切换浏览器看看

2022-03-01 16:09:04
  • 1
5
创作
10
粉丝
23
获赞
相关阅读
  • 海康机器视觉工程师认证相关内容
    2022-05-20
  • 海康机器人“悉灵杯”课题研究活动详情
    2022-05-18
  • V积分上线!你有N份福利待领取!
    2022-05-20
  • 单目抓取应用案例
    2022-04-28
  • ID读码器视野计算工具分享
    2022-05-12

请升级浏览器版本

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

推荐使用以下浏览器