将 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