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中均是这种问题,暂时还未找到适合的显示方法(参考强制转换显示:LabVIEW如何显示RGB64彩色图像http://visionbbs.com/thread-31485-1-1.html)。理论上,还要考虑一下像素格式才可以,就像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位版本,仅适用于32位版本,本示例不适用64位环境。
LabVIEW 2020SP1+VDM2020SP1,以及转换为早期的2013/14/15/16/17/18/19版本。但是转换为Halcon图像时,作者认真验证过NI论坛上涉及的各种方法,发现只有ArrayMemInfo函数转换效果和适用性最好,但是从他人提供的信息来看,这个内部函数是LabVIEW 2017版以后才出现的。之前的版本没有此函数,所以作者这里保存的LV2013~2016版本,打开示例时,均会报错崩溃。如需要使用该转换函数,需要保证LabVIEW版本>=2017版本
如果是更早版本的,则考虑使用其它方法,可参考:
32位/64位自适应VI
本示例避免了32位和64位不能切换的问题,示例程序可以在LabVIEW的32位版本和64位版本中相互切换。当然,VI是可以自适应,但是Halcon环境本身是不能兼容切换的。当打开32位LV时,需要调用32位的Halcon;当打开64位的LV时,则调用64位的Halcon。同时内部调用了元组库等。做了两个转换函数,一个是转HImage,另一个是转HOperator的。
32位环境RGB32彩色图像转换
64位环境RGB32彩色图像转换
32位环境U8灰度图像转换
64位环境U8灰度图像转换
LabVIEW Image转Halcon Image-LabVIEW and Halcon - NI Community原帖附件示例下载
http://visionbbs.com/thread-28227-1-1.html?fromuid=9
页:
[1]