从 C++ 调用 scikit-learn 函数

Sem*_*ier 4 c++ python boost opencv scikit-learn

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

And*_*ler 7

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


And*_*bas 5

您可以通过非常简单的方式来完成此操作,只需包含 python 标头并通过 Py* 包装器调用 python 脚本和/或 scikit 方法即可。

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


Sem*_*ier 5

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

  1. 将 python 包装成 C++ 并调用它的机制:实现此目的的现代方法是使用PyBind11
  2. 使用原生 C++ ML 库 - MLPack似乎是黄金标准,而OpenCV用于基于视觉的 ML。