从 C++ 调用 scikit-learn 函数

问题描述 投票:0回答:4

有没有办法从c++调用scikit-learn的函数?我的其余大部分代码都是用 opencv 编写的。我希望能够使用 scikit-learn 提供的分类器。据我了解,没有简单的方法 - 我需要使用 boost::python 或 swig。我还遇到了这个项目(https://github.com/spillai/numpy-opencv-converter),它显示了 numpy 数组<==> cv::Mat 对象之间的互操作,但我只知道如何使用从我的Python脚本,而不是相反。

python c++ opencv boost scikit-learn
4个回答
9
投票

您看过像 shogunmlpack 这样的原生 C++ 库吗?这些对您来说可能会更容易使用。


5
投票

您可以通过非常简单的方式做到这一点,通过包含 python 标头并通过 Py* 包装器调用 python 脚本和/或 scikit 方法。

有关完整示例,请参阅 https://docs.python.org/2/extending/embedding.html#pure-embedding


4
投票

根据原答案,今天似乎有两种方法可以解决这个问题

  1. 将Python包装成C++并调用它的机制:一种现代方法 要做到这一点,需要使用 PyBind11
  2. 使用本机 C++ ML 库 - MLPack 似乎是黄金标准,OpenCV 用于基于视觉的 ML。

0
投票

另一种可能性是

  1. 将 sklearn 模型(管道)转换为 ONNX(请参阅此处)和
  2. 在 C++ 中运行 ONNX-runtime(请参阅此处
© www.soinside.com 2019 - 2024. All rights reserved.