石鑫华视觉论坛

 找回密码
 注册会员
查看: 20|回复: 0

[原创] 如何将LabVIEW浮点数数组转换为Halcon元组?

[复制链接]
  • TA的每日心情
    擦汗
    5 小时前
  • 签到天数: 3562 天

    连续签到: 7 天

    [LV.Master]2000FPS

     楼主| 发表于 5 小时前 | 显示全部楼层 |阅读模式 来自:广东省深圳市罗湖区 电信

    注册登陆后可查看附件和大图,以及购买相关内容

    您需要 登录 才可以下载或查看,没有账号?注册会员

    x
    如何将LabVIEW浮点数数组转换为Halcon元组?
    在使用LabVIEW调用Halcon算子时,很多参数的输入值都是浮点数的数组(双精度DBL或单精度SGL数组)。当然,在Halcon中本身有浮点数的数组格式,也就是double双精度的数组,如[1.1 , 2.2 , 3.3],这个在HDevelop环境中是很好判断的。不过要用到LabVIEW环境中,则都是使用HTuple元组类型来表示。HTuple元组,则更类似于LabVIEW的变体数据类型,是可以包含多种数据类型的。因此,在使用LabVIEW调用Halcon算子需要输入浮点数数组时,通常是将LabVIEW的浮点数转换为HTuple元组格式。
    image1.png
    Halcon算子中的浮点数数组需要使用HTuple(double)来描述
    在Halcon的HOperetorSet类算子集中,并没有将LabVIEW的浮点数数组转换为HTuple的功能。而HTuple本身是属于一个类的,所以,只有在HTuple类中,才可以将LabVIEW的浮点数数组转换为HTuple类。
    HTuple类下的方法或属性本身也没有浮点数数组转HTuple类的,而是必须在打开HTuple构造器时选择相应的构造器,才可以将LabVIEW的浮点数数组转换为HTuple类:

    image2.png
    .NET选板中的构造器节点Constructor Node
    首选选择在程序集Assembly中选择halcondotnet的.NET库:

    image3.png
    选择halcondotnet程序集
    然后在Objects对象中选择HTuple:

    image4.png
    选择HTuple对象
    之后在Constructors构造器中选择HTuple(Double[] d):

    image5.png
    选择构造器HTuple(Double[] d)
    OK确定后,就可以得到一个构造器:

    image6.png
    HTuple(Double[]d)构造器节点
    这个HTuple(Double[] d)构造器节点,就是将LabVIEW浮点数数组转换为HTuple的方法。注意,这里是.NET的构造器节点来实现的,不是打开HTuple类后的属性或方法来实现的。
    上面的构造器节点函数放置后VI还是错误的,不能运行,这个是因为d端必须要连线才可以:

    image7.png
    d端连线后VI可运行
    这时如果在HTuple引用后面加一个HTuple的属性Type,可以得到当前的HTuple类型是双精度Double:

    image8.png
    HTuple(Double[] d)的类型是浮点数
    通过上面的方法,就可以将LabVIEW中的浮点数数组,转换为Halcon中的HTuple(Double[]d)元组双精度数了,方法是非常简单的。
    需要注意的是,Halcon中只有双精度的浮点数,并没有单精度的浮点数。如果是LabVIEW中的SGL单精度的浮点数数组,也是通过上面的方法,将其转换为HTuple的双精度,或者是直接在LabVIEW中先将SGL数组转换为DBL数组之后转换为HTuple双精度。

    image9.png
    SGL单精度数组直接转HTuple(Double)
    这时的d接线端是有红色箭头的,也就是SGL数组是有强制转换为DBL数组的。

    image10.png
    SGL数组转DBL数组后再转HTuple(Double)
    注意,浮点数数组仍然属于浮点数,Halcon的元组类型并没有单独列出浮点数数组这种类型,连数组都没有。数组更准确的理解,是一个容器,具体类型由其中的元素类型来决定:

    image11.png
    Halcon元组类型中没有数组这种类型

    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册会员

    本版积分规则

    LabVIEW HALCON图像处理入门教程(24.09)
    石鑫华机器视觉与LabVIEW Vision图像处理PDF+视频教程11种全套
    《LabVIEW Vision函数实例详解2020-2024》教程-NI Vision所有函数使用方法介绍,基于NI VISION2020,兼容VDM21/22/23/24

    QQ|石鑫华视觉论坛 |网站地图

    GMT+8, 2025-6-9 13:36

    Powered by Discuz! X3.4

    © 2001-2025 Discuz! Team.

    快速回复 返回顶部 返回列表