石鑫华视觉 发表于 2023-3-23 18:11:08

LabVIEW Image转Halcon Image

本vi的功能是将LabVIEW中的NI Vision Image图像引用转换到Halcon中的HImage引用,从而方便在LabVIEW中得到的图像在Halcon中进行处理。

已经验证过的图像类型包含U8、U16、I16、RGB等类型

RGB32

RGB32

I16

U16

U8

RGB64
注意,RGB64图像时,在Halcon中倒是还能正常显示,但是在LabVIEW中还不能正常显示。因为在MAX是采集图像时像素格式是BayerRG12,也就是像素位深是12位的,最大值也就是2^12=4095,而要显示12位的图像,在Windows系统/LabVIEW中,则需要使用16位两字节才可以,这时的最大值是2^16=65535,也就是RGB32的每通道也是由8位变成16位的RGB64。这时实际采集的图像灰度最大值也就是4095,但是这个最大值在RGB64最大值65535中,则是一个非常小的值,所以即使最大4095时,实际看起来仍然是比较黑的。深度着调整NI Image的16位映射模式,均无法调整成MAX中那种效果(在MAX中可以正常显示),这个在LabVIEW、视觉助手、VBAI中均是这种问题,暂时还未找到适合的显示方法。理论上,还要考虑一下像素格式才可以,就像MAX中一样,也是设置了像素格式才正常显示:

像素格式BayerRG12RGB64时在MAX中能正常显示

视觉助手中无法正常显示12位像素深度的RGB64图像
经过验证,RGB64的显示异常,应该属于Bug:
LabVIEW Image显示RGB64的Bug
http://visionbbs.com/thread-30194-1-1.html?fromuid=9

测试图像:
链接:https://pan.baidu.com/s/1YfjN1-SlF_7M8STZ-t3tkQ
提取码:gzb4

LabVIEW Image转Halcon Image函数:

开发环境HALCON 19.11 32位版本
LabVIEW 2020SP1+VDM2020SP1,以及转换为早期的2013/14/15/16/17/18/19版本。但是转换为Halcon图像时,作者认真验证过NI论坛上涉及的各种方法,发现只有ArrayMemInfo函数转换效果和适用性最好,但是从他人提供的信息来看,这个内部函数是LabVIEW 2017版以后才出现的。之前的版本没有此函数,所以作者这里保存的LV2013~2016版本,打开示例时,均会报错崩溃。如需要使用该转换函数,需要保证LabVIEW版本>=2017版本
如果是更早版本的,则考虑使用其它方法,可参考:

LabVIEW Image转Halcon Image-LabVIEW and Halcon - NI Community原帖附件示例下载
http://visionbbs.com/thread-28227-1-1.html?fromuid=9
页: [1]
查看完整版本: LabVIEW Image转Halcon Image

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