我熟悉编写可以从LabVIEW调用的DLL,但是我对将IMAQ图像传递给DLL的正确方法感到好奇。这是我发现的一种方式-我还使用类似的机制将IMAQ图像实例从我的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*
类型的指针地址。
这是执行此操作的最佳方法,还是有更好的方法?
最佳答案
我使用另一种方法,使用以下代码将所有图像信息(指针,大小等)放置在群集中:
然后将群集传递给DLL函数,对像素进行操作(当然,不更改大小),然后调用IMAQ的取消映射像素指针。
讨论后编辑:
您的解决方案依赖于拥有NI Vision,在这种情况下,它比我的要好。但是,如果没有NI Vision地雷,则是处理IMAQ像素数据的唯一方法。