我熟悉编写可以从LabVIEW调用的DLL,但我很好奇将IMAQ图像传递给DLL的正确方法。这是我发现的一种方法 - 我也使用类似的机制将IMAQ Image实例从我的DLL发布到事件结构。
请注意,将图像实例转换为群集或从群集转换的节点位于${LABVIEW_INSTALL_DIR}/vi.lib/vision/DatatypeConversion.llb
,分别命名为IMAQ Image Datatype to Image Cluster.vi
和IMAQ Image Cluster to Image Datatype.vi
。创建的集群由图像名称和一个整数值组成,该值表示C / C ++中Image*
类型的指针地址。
这是最好的方法,还是有更好的方法?
答案 0 :(得分:4)
我使用不同的方法,使用以下代码将所有图像信息(指针,大小等)放入集群中:
然后将簇传递给DLL函数,对像素进行操作(当然不改变大小),然后调用IMAQ的unmap像素指针。
讨论后编辑:
你的解决方案依赖于NI Vision,在这种情况下,它比我的好。但是,如果没有使用NI Vision我是使用IMAQ像素数据的唯一方法。