将 PyObject* 转换为 C++ 对象

Converting PyObject* to C++ Object

我有一个共享库 (util.so) returns python 以下内容:

cv::Mat toCvMat(PyObject *ndArrayObj) {
    // return cv::Mat
}

我使用 python 脚本调用方法:

Python:

testMat = util.toCvMat(orig_frame_gray_img)

当我将它传递给我的其他测试库 (test_library.so) 时,它作为 PyObject* 传递,我如何在我的 test_library.so 中访问 cv::Mat?:

Python:

test_library.process(testMat)

C++

bool TestLibrary::Process( PyObject* pTestImg)
{
// How to get cv::Mat from pTestImg?
}

目前,我的 test_library 没有 link util,它们是单独的 .so 文件。

基于http://yati-sagade.github.io/2013/05/11/numpy-boost-python/

NDArrayConverter cvt;
cv::Mat m;
m = cvt.toMat(pTestImg);

所需的NDArrayConverter可以从https://github.com/yati-sagade/opencv-ndarray-conversion

中找到