灵闪机器视觉社区

Python 怎么使用 LPV 里面的类和接口?

Viewed 17

可能会涉及到需要依赖的特定的python的包和特定的命令。

期望给出样例代码和测试结果,和原理的解释。

可能的技术路线有好几条:

  1. 通过COM调用;
  2. 通过C++调用;
  3. 跨进程方法调用(RPC)。
1 Answers

封装

我们使用 pybind11 将 C++ 库 LPV 中的关键类(如 ILImage 和 ILFlatFieldPtr)封装为 Python 可调用的类。通过 py::class_ 定义对应的 Python 类型,并使用 .def() 方法暴露所需的成员函数。

编译

编译过程由 CMake 管理,配置中需指定:
Python 解释器及开发头文件和静态库
pybind11 的头文件路径,
LPV 库的头文件和静态库(.lib)。
在 Windows 平台上,编译输出为 .pyd 文件(例如 lpv_py.cp313-win_amd64.pyd),该文件即为标准的 Python 扩展模块,可被 Python 直接 import lpv_py。

导入

由于 LPV 依赖于动态链接库(如 lpvCore.dll),在运行时需确保这些 DLL 可被加载。为此,在 Python 代码中:
使用 sys.path.append(...) 将 .pyd 所在目录加入模块搜索路径;
使用 os.add_dll_directory(...)显式添加 DLL 依赖所在的目录,避免“找不到 DLL”错误。

样例代码

下载附件[py_demo.zip]py_demo.zip并解压到lpv路径下,后续操作见压缩包中的README.md

运行结果

参见如下图片,
image.png

参考

详细请参考https://pybind11.readthedocs.io/en/stable/classes.html

Related