将 c++ 向量传递给 python 并返回

Posted

技术标签:

【中文标题】将 c++ 向量传递给 python 并返回【英文标题】:Passing a c++ vector to python and back 【发布时间】:2014-09-18 04:05:25 【问题描述】:

我正在使用 c++ 代码对图像进行一些模拟。在某些时候,我需要标记图像簇,为此我想使用 python ndimage.label(因为它几乎比我的标记代码快 10 倍)。但是,我对 python 很陌生,不知道如何将参数(图像)从 C++ 传递给 python。搜索到现在没有结果

    在C++代码中,图片存储为vector<vector<int>> python 代码需要图像为ndarray 我想再次将输出标记数组 (ndarray) 从 python 转换为 vector<vector<int>>

任何人都可以建议如何实现这一目标。首先,任何建议都可以,尽管计算时间对我来说是个大问题

【问题讨论】:

在速度方面,每次我要标注时,在c++和python之间来回转换变量会有多少开销。从您的回复看来,该变量似乎是在 C++ 和 python 之间通过引用传递的 【参考方案1】:

您可以使用我的库 https://github.com/jzwinck/pccl/blob/master/NumPyArray.hpp 使用现有数据从 C++ 创建一个 NumPy 数组,例如从一个向量。在 Python 中所做的任何更改都将反映在 C++ 中。它依赖于 Boost.Python,但核心代码很简单,并且直接使用 NumPy C API,因此您也可以仅提取该部分(密钥为 PyArray_NewFromDescr)。

【讨论】:

以上是关于将 c++ 向量传递给 python 并返回的主要内容,如果未能解决你的问题,请参考以下文章

Cython - 将 C++ 函数返回的 C++(向量和非向量)对象暴露给 Python

如何将值从python传递给c++并返回?

SWIG:如何将复数向量从 C++ 传递到 python

C++11 线程:将向量传递给线程函数时出错

如何将 cv::mat 对象从 python 模块传递给 c++ 函数并返回返回的 cv::mat 类型的对象?

如何将 opencv Mat 类型传递给 Python 并返回一个数组?