ni.com is currently undergoing scheduled maintenance.

Some services may be unavailable at this time. Please contact us for help or try again later.

LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

"Problems developing a vision algorithm shared library (.so) on the NI Linux Real-Time x64 platform."

Solved!
Go to solution

谢谢 rolfk,这真的很有帮助——彻底解开了很多疑惑。

你说得对,我和克劳德在错误的道路上耗费了太长时间。我们浪费了大量时间去追查“两个库实例”、SDK 版本不匹配、ABI 不兼容等等问题。结果发现真正的问题要根本得多:  LabVIEW IMAQ 引用句柄和图像指针根本不是一回事 。

如果其他人也遇到类似情况,以下是我们发现问题的简要总结:

  1. 最初我将 Image 参数设置为“适应类型,按值处理”——这会传递一些内部 LabVIEW 包装结构,而不是实际的 Image* 指针。

  2. 每次 NI Vision 调用(imaqThreshold、imaqGetImageType、imaqGetImageSize 等)均失败,错误代码为 -1074396120(“不是图像”)。

  3. 经过一系列测试(全局变量检查以确认单个 .so 实例、内存诊断、dlopen 比较),我发现将参数更改为“数值、无符号指针大小的整数、传递值”后,一切都正常了——imaqGetImageType 返回 0 (U8),imaqThreshold 返回 1,并且图像被正确二值化。

但根据你的解释,我现在明白了,这种“有效”的方法可能并未得到官方支持或任何文档记录。将 IMAQ 引用句柄作为指针大小的整数传递恰好有效,这很可能只是一个实现细节,未来版本可能会失效。

0 Kudos
Message 11 of 12
(57 Views)

Here is the exact solution to my problem:

change 

ddddd212_0-1775870283847.png

 

to 

ddddd212_1-1775870322663.png

 

There's a code I'm sending out as well for those who need it

0 Kudos
Message 12 of 12
(49 Views)